gpt4 book ai didi

c++ - 如何检查鼠标在最后 5 秒内没有移动?

转载 作者:行者123 更新时间:2023-11-30 01:55:34 27 4
gpt4 key购买 nike

我正在为我的游戏程序处理一项任务,在该任务中,我想在离开屏幕 10 秒后隐藏鼠标。但是我能够检查鼠标移动情况......这是我的代码..

using namespace std;

HHOOK g_hMouseHook;

LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
PMSLLHOOKSTRUCT pmll = (PMSLLHOOKSTRUCT) lParam;

switch (wParam)
{

case WM_MOUSEMOVE:

printf("Mouse has been moved\n");

break;
}

}

return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam);
}
int _tmain(int argc, _TCHAR* argv[])
{
MSG msg;

g_hMouseHook = SetWindowsHookEx( WH_MOUSE_LL, LowLevelMouseProc, GetModuleHandle(NULL), 0 );


if (!g_hMouseHook)
printf("err: %d\n", GetLastError());


while ( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

UnhookWindowsHookEx(g_hMouseHook);
return (int) msg.wParam;
}

我是通过使用钩子(Hook)来完成的,它成功地显示了鼠标移动。现在我正在寻找一个选项,通过它我还可以检查我的鼠标是否没有被移动过。*我正在控制台上做一件事。

我已经使用 LoadCursorfromFile 更改了鼠标光标或隐藏并且它工作正常。

请分享您的意见,以检查鼠标何时不动。

最佳答案

调用 TrackMouseEvent 设置 5000 毫秒的空闲时间。 5 秒后您将收到一条 WM_HOVER 消息。您可以在每次按键时重置计时器,但这有点低效。相反,您应该在每次按键时更新一个 lastKeyPressedTime 变量。现在,如果 WM_HOVER 在 5 秒后到达,您将检查最后一次按键是否在 5 秒前。如果是,则您既没有键盘也没有鼠标输入,可以移除鼠标。

如果在鼠标空闲的最后 5 秒内有键盘输入,则应重置 TrackMouseEvent。如果你懒惰,再次将其重置为 5 秒。如果你是准确的,你必须多一点创意。

关于c++ - 如何检查鼠标在最后 5 秒内没有移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20611382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com