使用 SendInput 模拟拖放操作

Posted

技术标签:

【中文标题】使用 SendInput 模拟拖放操作【英文标题】:Simulating a drag & drop operation using SendInput 【发布时间】:2011-03-06 01:43:47 【问题描述】:

SendInput 可以用来模拟拖放操作吗?

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

【问题讨论】:

【参考方案1】:

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

您需要一个线程,因为 DoDragDrop 是一个阻塞调用。先假鼠标,启动线程,调用DoDragDrop。线程应该休眠以给 DoDragDrop 足够的时间开始,然后假鼠标移动和鼠标向上。第一次成功,请多指教,如果不行就无法调试。

【讨论】:

【参考方案2】:

shell 已经有一个模拟下降的功能:SHDoDragDrop,不需要像假鼠标输入这样的黑客攻击。

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

【讨论】:

以上是关于使用 SendInput 模拟拖放操作的主要内容,如果未能解决你的问题,请参考以下文章

SendInput模拟键盘输入的问题

模拟键盘发送文字(使用SendInput函数)

时间:2019-04-10 标签:c++win32SendInput()

如何在 Selenium Webdriver 中模拟 HTML5 拖放?

使用移动设备的触摸事件模拟拖放事件

Python SendInput() 按键无法识别