当前位置: 代码迷 >> PB >> 分享 Windows API中mouse_event函数解决方法
  详细解决方案

分享 Windows API中mouse_event函数解决方法

热度:99   发布时间:2016-04-29 06:23:49.0
分享 Windows API中mouse_event函数
mouse_event (long dwFlags,long dx,long dy,long cButtons,long dwExtraInfo)

long dwFlags :

MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。
MOUSEEVENTF_MOVE:表明发生移动。
MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。
long dx,long dy :指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置

long cButtons : dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。

long dwExtraInfo :指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。

PB例子:

功能:点击按钮2 模拟鼠标移动点击功能 移动到按钮1并实现按钮1功能 

//1.声明API函数 
Subroutine mouse_event (long dwFlags,long dx,long dy,long cButtons,long dwExtraInfo) Library "user32.dll" 

//2.在脚本里调用 

long MOUSEEVENTF_LEFTDOWN = 2       //模拟鼠标左键按下
long MOUSEEVENTF_LEFTUP = 4         //模拟鼠标左键抬起 
long MOUSEEVENTF_MOVE = 1           //模拟鼠标移动
long MOWSEEVENTF_ABSOLOTE = 32768   //模拟参数dX,dy含有规范化的绝对坐标。
long MOUSEEVENTF_RIGHTDOWN = 8      //模拟鼠标右键按下 
long MOUSEEVENTF_RIGHTUP = 16       //模拟鼠标右键抬起 
long MOUSEEVENTF_MIDDLEDOWN = 32   //模拟鼠标中键按下 
long MOUSEEVENTF_MIDDLEUP = 64      //模拟鼠标中键抬起 

long MOUSEEVENTF_WHEEL = 2048       //模拟鼠标滚轮移动数量

mouse_event( MOUSEEVENTF_MOVE+MOWSEEVENTF_ABSOLOTE+MOUSEEVENTF_LEFTDOWN,25000,24000,0,0)

cb_1.triggerevent(clicked!)

注意点 
定义dwFlags里的参数赋值很重要 不能改变 调用方法提取的是你赋值的数字 
也可以不定义直接调用方法 例如:移动鼠标
mouse_event( 1+32768,25000,24000,0,0)
使用绝对定位x.y值范围 0到65535

问题
调用方法使用非定义参数的 1 2 4 8 ......之类的 它是执行什么 如何判断
例如 
mouse_event( 3,50,40,0,0) 是相对定位 移动50 40
mouse_event(18,50,50,0,0) 是按下鼠标左键功能
使用非定义参数 它是执行什么 如何判断
------解决方案--------------------
呵呵,用沙发来消灭零回复~~
------解决方案--------------------
板凳来了
  相关解决方案