微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我的程序不在前台,如何检测鼠标滚动事件

我写了一个程序,在游戏中呈现覆盖,显示一些额外的信息。 我可以通过使用GetKeyState检测键盘和一些鼠标按键,但是没有虚拟键代码用于上下滚动,我也想使用它。

我知道滚动处理更像一个事件的方式,而不是按键,但这并没有什么帮助。 那么有没有解决我的问题?

我想到的事情:

通过一些函数检测滚动事件?

以某种方式获得Windows消息发送到我的程序中的游戏(这就是所谓的Hooking IIRC)

我正在使用Visual Studio 2013 Express [C ++]

使用stdout和stdin打开窗口

什么是使用用户提供的密码encryption和解密string的简单方法,在本机Win32和.NET中都可以使用?

如何在Windows上启动守护进程从python?

基于CDialog的MFC应用程序只能在主监视器中启动

如何使用ffmpeg,这样就不需要在应用程序文件夹中包含它的dll了?

Windows上的Ruby:无法安装MysqL2 gem – 无法构buildgem本机扩展

记事本字符解码

如何在Windows 8.1手机上运行cordova应用程序?

无法在本地安装驱动器 – 通过VPN的Azure文件存储

我如何使用线程本地存储(TLS)?

检查SetwindowsHookEx:特别是http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx和WH_MOUSE。

我通过使用下面的代码解决了这个问题。

LRESULT CALLBACK mouseProc(int nCode,WParaM wParam,LParaM lParam) { using namespace MouseLog; MsllHOOKSTRUCT * pMouseStruct = (MsllHOOKSTRUCT *)lParam; if (pMouseStruct != NULL) { if (wParam == WM_MOUSEWHEEL) { if (HIWORD(pMouseStruct->mouseData) == 120) MScrollUp = 1; else MScrollDown = 1; } if (wParam == WM_MBUTTONDOWN) MScrollBtn = 1; //printf("Mouse position X = %d Mouse Position Y = %dn",pMouseStruct->pt.x,pMouseStruct->pt.y); } return CallNextHookEx(hMouseHook,nCode,wParam,lParam); } DWORD WINAPI MouseLogger(LPVOID lpParm) { HINSTANCE hInstance = GetmoduleeHandle(NULL); hMouseHook = SetwindowsHookEx(WH_MOUSE_LL,mouseProc,hInstance,NULL); MSG message; while (GetMessage(&message,NULL,0)) { TranslateMessage(&message); dispatchMessage(&message); } UnhookWindowsHookEx(hMouseHook); return 0; }

为了启动MouseLogger,使用CreateThread()。

我明白,没有鼠标滚动的keystate,但其他像WM_MOUSEWHEEL别的东西

如果这回答你的问题,你可能想看看这个

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645617(v=vs.85).aspx

否则,如果这不帮助你,我会很乐意帮助你,如果这剂量的帮助

您可以使用旧版游戏API DirectInput 。 我知道当你使用disCL_BACKGROUND标志的时候窗口在后台的时候肯定会有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐