我试图模拟“硬件”鼠标单击,因为似乎某些软件例如阻止了来自PostMessage的输入。我知道这里有SendInput,但这不是一个选择,因为我还需要它在后台窗口中兼容。解决方案似乎是一个低级的鼠标钩,但是我已经四处搜寻,除了记录器之外,找不到其他东西,没有操纵鼠标,单击等操作。我希望这种情况无需写一些即可一种用作伪造的鼠标驱动程序的C ++ / C包装器。
http://support.microsoft.com/kb/318804,我发现了这一点,但似乎没有任何进一步的帮助。
任何帮助表示赞赏:)
最佳答案
不知道可能是什么“某些软件”,但是可以肯定的是,UAC阻止您将消息发送到高级程序的窗口中。它被称为UIPI,用户界面特权隔离。
通常,用PostMessage伪造输入根本无法正常工作。对于键盘输入尤其是一个问题,但是鼠标输入也有麻烦。没有好的方法可以更改另一个进程的键盘状态。当程序在处理输入消息时检查Shift,Ctrl和Alt键的状态时,这一点很重要。很多。
唯一真正的解决方案是使用SendInput()模拟输入。现在您有一个重点问题要解决。
关于c# - C#鼠标钩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177706/