0

我有一个透明窗口(WS_EX_TRANSPARENT)浮动最上面。

只要有鼠标移动(屏幕上的任何地方)或键盘敲击,它就需要显示相关信息(例如鼠标位置)。

是否可以在不使用全局挂钩的情况下捕获鼠标/键盘活动?杀毒软件几乎总是会因使用全局挂钩而触发误报。

任何想法都非常感谢。

4

4 回答 4

1

I guess, GetAsyncKeyState and GetCursorPos might help. You probably can have a thread calling these functions every 300-500 msec, and posting a message to your main thread.

于 2011-06-01T09:11:44.123 回答
0

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

(通过这种方法,您还可以获得有关输入来自的特定设备的信息,因此您可以区分多个键盘。这是大多数以“使用 RegisterRawInputDevices”作为答案的问题的标题。但您也可以使用它来捕获输入,不关心来源。)

于 2011-06-01T09:19:38.020 回答
-1

您可以获得有关键盘/鼠标活动的通知 ( GetLastInputInfo),而且我相当肯定您可以获得光标位置 ( GetMouseMovePointsEx)。如果您不需要实际的键盘敲击,那么应该这样做。如果你这样做,我不认为它可以做到......

于 2011-06-01T09:06:14.353 回答
-1

LASTINPUTINFO lastInputInfo = new LASTINPUTINFO(); UInt32 lastInputTick = lastInputInfo.dwTime; return Environment.TickCount - (Int32)lastInputInfo.dwTime

此代码 (C#) 返回不活动时间(键盘和鼠标两者)。所以你可以有时间,因为用户是不活动的。

于 2014-03-20T13:15:50.763 回答