SendInput 可以用来模拟拖放操作吗?
我有一个应用程序,它接受某种格式的文件,但不是从命令行拖放到它上面,我想将它与一个文件相关联。我想我会创建一个小工具来查找窗口并模拟文件的拖放 - 这可能吗?我需要使用SendInput
还是可能SendMessage
?参数是什么?
SendInput 可以用来模拟拖放操作吗?
我有一个应用程序,它接受某种格式的文件,但不是从命令行拖放到它上面,我想将它与一个文件相关联。我想我会创建一个小工具来查找窗口并模拟文件的拖放 - 这可能吗?我需要使用SendInput
还是可能SendMessage
?参数是什么?
是的,很有可能。SendInput 在非常低的级别注入鼠标事件。SendMessage 将不起作用。
你需要一个线程,因为 DoDragDrop 是一个阻塞调用。先假鼠标,启动线程,调用DoDragDrop。线程应该休眠给 DoDragDrop 启动足够的时间,然后假鼠标移动和鼠标向上。保持手指交叉,它第一次工作,如果没有,就无法调试。
shell 已经有一个模拟下降的功能:SHDoDragDrop,不需要像伪造鼠标输入这样的黑客攻击。
由于您在谈论命令行,XP 添加了对模拟应用程序/注册文件类型的 D&D 的支持:如何接受通过 IDropTarget 而不是在命令行打开的文件?