模拟拖拽和使用SendInput删除操作

时间:2011-03-06 01:43:48

标签: winapi drag-and-drop sendmessage sendinput

SendInput可用于模拟drap&放弃操作?

我有一个应用程序接受放在它上面的某种格式的文件,但不是从命令行,我想将它与文件关联。我以为我会创建一个找到窗口的小工具,并模拟一个拖动和放大器。丢弃文件 - 这有可能吗?我需要使用SendInput还是SendMessage?参数是什么?

2 个答案:

答案 0 :(得分:3)

是的,非常可能。 SendInput以非常低的级别注入鼠标事件。 SendMessage不起作用。

你需要一个线程,因为DoDragDrop是一个阻塞调用。先将鼠标按下,启动线程,调用DoDragDrop。该线程应该休眠,以便为DoDragDrop提供足够的时间来启动,然后伪造鼠标移动和鼠标移动。保持手指交叉它第一次工作,如果没有,就不可能调试。

答案 1 :(得分:3)

shell已经有一个模拟掉落的函数:SHDoDragDrop,不需要像伪造鼠标输入那样的黑客攻击。

由于您在谈论命令行,XP增加了对模拟应用程序/注册文件类型的D& D的支持:How do I accept files to be opened via IDropTarget instead of on the command line?