分享 Windows API中mouse_event函数

码不死你 2013-07-19 02:24:46
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) 是按下鼠标左键功能
使用非定义参数 它是执行什么 如何判断
...全文
683 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjlion 2013-07-19
  • 打赏
  • 举报
回复
板凳来了
pb8 2013-07-19
  • 打赏
  • 举报
回复
呵呵,用沙发来消灭零回复~~

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧