拖放模拟?

3

我有一个专有的应用程序,唯一的外部传递数据的方式是从其他应用程序拖放(就像从Windows资源管理器中拖放文件一样)。我的问题是,是否可能模拟来自外部应用程序的拖放操作?最好使用纯Win32解决方案,也可以包含依赖项,如MFC和WTL。

求助!


aloneguid:你找到答案了吗?我也有完全相同的问题。如果你找到了任何东西,请告诉我(a_poostchi@yahoo.com)。 - AliPST
aloneguid:你找到答案了吗? - test
1个回答

0

我认为这是可能的,但你可能需要使用COM(尽管我不确定 - 有一个WM_DROPFILES消息和一些相关函数,但我找不到用于放置数据的函数)。请参见MSDN上的this article


3
WM_DROPFILES是一条已废弃的消息,仅用于向后兼容。它可以通过SendMessage()从一个应用程序发送到另一个应用程序,但仅适用于发送文件名,不能发送其他内容。 若要拖放实际数据,需要使用IDropTarget和IDataObject接口。 但是,您无法使用它们模拟拖放操作。必须有外部应用程序使用有效的IDropSource和IDataObject接口调用DoDragDrop(),然后由用户完成拖放操作。无法直接访问窗口的IDropTarget接口。 - Remy Lebeau
一个应用程序可以使用OleSetClipboard()将IDataObject接口放置在剪贴板上。另一个应用程序可以使用OleGetClipboard()检索它。 - Remy Lebeau
@Remy,不幸的是,听起来他们没有访问“专有”应用程序的源代码。 - NotMe
没错。很抱歉误解了。没有专有应用程序的源代码。它接受来自Windows资源管理器的拖放文件操作中传入的数据,然后处理该文件中的数据,这是所有已知的传递数据的方法。根据Spy++,应用程序没有收到任何有趣的拖放相关信息,只有WM_MOUSEMOVE、WM_NCHITTEST和WM_MOUSEUP。我将探索COM接口,但我不是COM专家 :( - Ivan G.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接