加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读