Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在没有全局钩子的情况下获得鼠标/键盘活动的通知?_C++_C_Winapi_Keyboard Hook_Mouse Hook - Fatal编程技术网

C++ 如何在没有全局钩子的情况下获得鼠标/键盘活动的通知?

C++ 如何在没有全局钩子的情况下获得鼠标/键盘活动的通知?,c++,c,winapi,keyboard-hook,mouse-hook,C++,C,Winapi,Keyboard Hook,Mouse Hook,我有一个透明窗口(WS_EX_transparent)浮动在顶部 每当鼠标移动(屏幕上的任何位置)或键盘敲击时,都需要显示相关信息(例如鼠标位置) 是否可以在不使用全局钩子的情况下捕获鼠标/键盘活动?反病毒软件几乎总是会触发错误警报以使用全局 钩子 非常感谢您的任何想法。您可以得到键盘/鼠标活动的通知(GetLastInputInfo),我相当肯定您可以得到光标位置(GetMouseMovePointsEx)。如果您不需要实际的键盘笔划,那么应该这样做。如果你这样做了,我想这是办不到的…我想,也

我有一个透明窗口(WS_EX_transparent)浮动在顶部

每当鼠标移动(屏幕上的任何位置)或键盘敲击时,都需要显示相关信息(例如鼠标位置)

是否可以在不使用全局钩子的情况下捕获鼠标/键盘活动?反病毒软件几乎总是会触发错误警报以使用全局 钩子


非常感谢您的任何想法。

您可以得到键盘/鼠标活动的通知(
GetLastInputInfo
),我相当肯定您可以得到光标位置(
GetMouseMovePointsEx
)。如果您不需要实际的键盘笔划,那么应该这样做。如果你这样做了,我想这是办不到的…

我想,也许会有帮助。您可能会有一个线程每300-500毫秒调用一次这些函数,并向主线程发送消息。

您可以通过注册接收原始输入消息。看看,RRUZ的公认答案中有一些链接,其中一个指向C#实现。这适用于窗口消息,不涉及挂钩


(使用此方法,您还可以获得输入来自的特定设备的信息,因此您可以区分多个键盘。这是大多数以“使用RegisterRarWinPutDevices”作为答案的问题的标题。但您也可以使用它仅捕获输入,而不必关心源。)
LASTINPUTINFO LASTINPUTINFO=new LASTINPUTINFO();
UInt32 LASTINPUTICK=lastInputInfo.dwTime;
return Environment.TickCount-(Int32)lastInputInfo.dwTime

此代码(C#)返回非活动时间(键盘和鼠标都有)。因此,您可以拥有自用户处于非活动状态以来的时间