Windows下C++通过hook捕捉鼠标
发布时间:2020-12-16 07:44:17 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 /* * Make sure project type is windows application */ #define _WIN32_WINNT 0x0500#includewindows.h#includecmath LRESULT CALLBACK mouseHookPr
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 /* * Make sure project type is windows application */ #define _WIN32_WINNT 0x0500 #include<windows.h> #include<cmath> LRESULT CALLBACK mouseHookProc(int nCode,WPARAM wParam,LPARAM lParam) { // Get event information PMSLLHOOKSTRUCT p = (PMSLLHOOKSTRUCT) lParam; bool eat = false; // Screen resolution static float screen_cx = static_cast<float>( GetSystemMetrics(SM_CXSCREEN) ); static float screen_cy = static_cast<float>( GetSystemMetrics(SM_CYSCREEN) ); // Centre of screen static float screen_centre_x = screen_cx / 2.0f; static float screen_centre_y = screen_cy / 2.0f; // Calculate distance away from centre of screen float dx = p->pt.x - screen_centre_x; float dy = p->pt.y - screen_centre_y; float dist = sqrt(dx * dx + dy * dy); // Check if cursor is more than 300px away from centre of screen if (dist > 300) { float angle = atan2(dy,dx); // Trap cursor SetCursorPos( /* X */ int( screen_centre_x + cos(angle) * 300 ),/* Y */ int( screen_centre_y + sin(angle) * 300 ) ); // Stop windows handling event eat = true; } return (eat ? 1 : CallNextHookEx(NULL,nCode,wParam,lParam)); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { // Set mouse hook HHOOK mouseHook = SetWindowsHookEx( WH_MOUSE_LL,/* Type of hook */ mouseHookProc,/* Hook process */ hInstance,/* Instance */ NULL); // Wait for user to exit MessageBox(NULL,"Press OK to close.","",MB_OK); return 0; } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |