windows鼠标消息处理

1、鼠标坐标问题

BOOL GetWindowRect(

   HWND hWnd,
    LPRECT lpRect
 );

  RECT x;//定义一个二维数组x

  ::GetWindowRect(hwnd,&x);

  POINT P;//x,y  RECT型 X 的指针

  GetCursorPos(&p);          //取当前鼠标坐标指针

  SetCursorPos(x+r1.left,y+r1.top);  //设置下一步鼠标坐标指针

  SetCursorPos(p.x,p.y);        //还原鼠标坐标

2、模拟鼠标消息

LRESULT SendMessage(
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

int x=?,y=?;

                              //y<<16)+x=lParam

                              //lParam可由SPY++拦截获取,亦可计算

                              //eg.x=655;y=577 lparam 0x0241028f

                              //      0x 0172 01f3

                              //     370   499

左键单击模拟:

  SendMessage(hwnd,WM_LBUTTONDOWN,0,(y<<16)+x);

  SendMessage(hwnd,WM_LBUTTONUP,0,(y<<16)+x);

左键双击模拟:

  SendMessage(hwnd,WM_LBUTTONDBLCLK,0,(y<<16)+x); 

右键单击模拟:

  SendMessage(hwnd,WM_RBUTTONDOWN,0,(y<<16)+x);

  SendMessage(hwnd,WM_RBUTTONUP,0,(y<<16)+x);

右键双击模拟:

  SendMessage(hwnd,WM_RBUTTONDBLCLK,0,(y<<16)+x); 

2、鼠标事件

VOID mouse_event(
  DWORD dwFlags, 
  DWORD dx, 
  DWORD dy, 
  DWORD dwData, 
  DWORD dwExtraInfo
);

左键单击消息:
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);         //第一个参数位 鼠标操作状态

  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

左键双击消息:

  mouse_event(_RBUTTONDBLCLK,0,0,0,0);

右键单击消息
  mouse_event(MOUSEEVENTF_REFTUP,0,0,0,0);

  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

右键双击消息:
  mouse_event(   ,0,0,0,0);

时间: 2024-12-25 18:42:27

windows鼠标消息处理的相关文章

Windows鼠标键盘消息处理

1 #include <windows.h> 2 #include <tchar.h> //swprintf_s函数所需的头文件 3 4 #pragma comment(lib, "winmm.lib") //playSound 5 #pragma comment(lib, "Msimg32.lib") //TransparentBlt 6 7 #define WINDOW_WIDTH 800 8 #define WINDOW_HEIGHT

windows鼠标响应相关知识

1.确定鼠标键点击的是哪个窗口.windows会用表记录当前荧屏上各个窗口的区域坐标,当鼠标驱动程序通知windows鼠标键按下了,windows根据鼠标的坐标确定点击的是哪个窗口. 2.确定鼠标键点击的是窗口的哪个部位.windows会想鼠标键点击的窗口发送WM_NCHITTEST消息,来询问鼠标键点击的是窗口的哪个部位.(WM_NCHITTEST的消息响应函数的返回值会通知Windows).通常来说,WM_NCHITTEST消息是系统来处理的,用户一般不会主动去处理它(也就是说,WM_NCH

使用virt-manager远程管理windows鼠标漂移的问题

在使用virt-manager远程管理windows虚拟机时,鼠标漂移导致无法操作windows,很不方便.解决办法,在虚拟机配置文件中找到<input type='mouse' bus='usb'>把mouse改为tablet或者在 <devices> </devices>中添加<input type='tablet' bus='usb'>然后关机重新加载配置文件,问题解决. 或者virt-manager图形化界面操作 原文地址:http://blog.5

Windows键盘消息处理

原文链接: http://blog.sina.com.cn/s/blog_5f8817250100taab.html 本文大部分来自MSDN和网友的博客,我在实践的基础上再作了一些总结. 1,虚拟键(VK_*) 键盘上每一个键对应一个扫描码,扫描码是OEM厂商制定的,不同的厂商生产的键盘同样一个按键的扫描码都有可能出现不一致的情况,为了摆脱由于系统设备不一致的情况,通过键盘驱动程序将扫描码映射为统一的虚拟键码表示,从而达到所有的设备都有一个统一的虚拟键,比如回车键的虚拟键是VK_RETURN.

获取windows鼠标的当前坐标

#先下载pyautogui库,pip install pyautogui import os,time import pyautogui as pag try: while True: print ("Press Ctrl-C to end") x,y = pag.position() #返回鼠标的坐标 posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4) print posStr#打印坐标 time.slee

Windows API的消息处理机制

上个学期找实习失利,让我觉得自己基础打得不够牢固,所以在华为实习的这三个月里,每天下班都在复习理论课的知识,顺便刷了一个月的 LeetCode.本来以为找工作是势在必得了,结果这个学期秋季校招的坑爹经历导致现在还没有拿到一家公司的 offer.华为实习一结束,回学校的第二天就去参加了 360 在广州的笔试,进了面试以后却又喜闻乐见地一面就被干掉了.再加上之前 milo yip 大大对我提的建议,思来想去,感觉还是自己的简历不够拿得出手.现在开始都没剩下几家想进的公司了,为了不失业只能提早为明年的

让鼠标滚轮在WINDOWS系统中也和MAC一样滚动(WIN系统鼠标滚轮反向)

用习惯MAC系统偶尔要用用WINDOWS系统,或者由于各种原因总之时不时需要由MAC转向WIN系统或同时需要两个平台机器上倒腾来倒腾去的同学,一般来说最痛苦的就是鼠标滚轮方向不一致. 基本上我们知道苹果系统里到是可以把鼠标滚轮方向设置成和WINDOWS一样的方向,但是那就 触摸板的"上.下"方向也反过来了,这也太反人类了-- 所以看来我们可以考虑的主要还是在WINDOWS上下手,而且用习惯的话还是觉得MAC系统的滚轮方向才更科学一些--当然,不排除这是因为我更习惯MAC-- 在网上找了

Windows游戏编程之从零开始d

I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来浅墨的博客逛一下看有没有更新,"每天都来就像看女神那般不依不舍",弄得我再不更新都不好意思了,哈哈~怎么说呢,前段时间忙毕设,回国,暑假,间隔年旅行休整,然后是适应新的生活,各种事情,也真正没有心境来更新博客了,最近正好心境安定下来,就继续开始写博.额,关于思想汇报改天我专门写一篇文章和大家交流交流,现在先打住说正事吧~ 首

Windows API参考大全新编

书名:新编Windows API参考大全 作者:本书编写组 页数:981页 开数:16开 字数:2392千字 出版日期:2000年4月第二次印刷 出版社:电子工业出版社 书号:ISBN 7-5053-5777-8 定价:98.00元 内容简介 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的.本书首先对Win32 API函数做完整的概述:然后收录五大类函数:窗口管理.图形设备接口.系统服务.国际特性以及网络服务:在附录部分,讲解如何