我正在编写一个需要监视鼠标点击的应用程序。
点击可能发生在屏幕上的任何地方,而不是在应用程序窗口内,对于每次点击我都必须传递一条消息(执行某个操作或其他操作)。
我环顾四周并阅读了一些建议,例如使用
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
但是我没有成功。
有人知道如何实现我需要的东西吗?
最佳答案
您需要按照 MSDN 中的说明设置鼠标 Hook .
请注意,在您的情况下, Hook 需要是全局的。这意味着您需要在 DLL 中实现一个处理函数,它将被加载到系统中所有接收鼠标消息的进程中。这样的 DLL 将使用一些进程间通信 (IPC) 机制(如共享内存)或通过从 DLL 到主应用程序的 Windows 消息发布(未发送)与您的主应用程序进行通信。
您可以使用来自 this CodeProject article 的源代码作为指南。
更新:根据 Chris 的更正,我应该注意以上内容适用于同步的“常规”鼠标 Hook 。低级 Hook 不需要位于 DLL 中,但它有一定的限制,这在 corresponding MSDN article 中有所描述。 .
关于c++:如何在发生的任何地方捕获鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817860/