c++:如何在发生的任何地方捕获鼠标点击

标签 c++ winapi mouse

我正在编写一个需要监视鼠标点击的应用程序。

点击可能发生在屏幕上的任何地方,而不是在应用程序窗口内,对于每次点击我都必须传递一条消息(执行某个操作或其他操作)。

我环顾四周并阅读了一些建议,例如使用

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/

相关文章:

c++ - 我应该如何用 NAN 1.x 中的数字代码抛出错误?

c# - 什么是消息泵?

c++ - Xlib,C++ - 获取窗口句柄(SendEvent,...)

html - 通过 html Canvas 获得点击

c++ - 如何在 Restinio 中使用 POST 处理程序?

c++ - Arduino PinChangeInt.h 产生编译器错误

c++ - 用于 C++ 的嵌入式调试器

winapi - 在哪种情况下,动态CRT在调用用户提供的DllMain时尚未初始化?

.net - OpenGL 是否可以使用 .NET 形式?

python - python实现鼠标画圆圈的方法