LabVIEWwilliam hill官网
直播中

荣琪

8年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注
[文章]

荣小菜补钙记第60期_LabVIEW之调用user32实现键鼠控制

荣小菜补钙记第60期_LabVIEW之调用user32实现键鼠控制

同步更新于 WeChat:荣小菜在补钙

大家好,我是荣小菜,本期主要讲解调用user32.dll实现键鼠的控制,目前LabVIEW实现键鼠控制方法有不少,但网上的资料比较零散,尝试简单归纳总结一下。

mouse_event函数

该函数用于鼠标控制,其定义如下:

mouse_event(int32_t
dwFlags, int32_t dx, int32_t dy, int32_t dwData, int32_t dwExtraInfo);

该函数的参数网上资料很多,此处不再详细讲解。

需要提一下的是该函数响应的事件及对应dwFlags值,下图中给出了对应关系。
1.PNG!2.PNG

我们可以将码值相加后传递来实现多个事件触发,不过需要注意的是,鼠标事件相应优先级别由高到低为:移动 左按下 左释放 右按下 右释放。

下图为LabVIEW实现代码,该代码是网上大神提供的比较有借鉴价值的一种。
3.PNG

keybd_event函数

该函数用于键盘控制,其定义如下:

Function
prototype:

VOID
keybd_event(

BYTE bVk, //virtual key code

BYTE bScan, //The key of the hardware scan code

DWORD
dwFlags, //A flag bit set for all
aspects of a function operation

DWORD
dwExtralnfo //Additional 32 bit values
associated with the key

);

bVK是虚拟键码,bScan是扫描代码,扫描代码主要用于标识按下了哪个键而无需考虑当前键盘布局,一般在桌面应用程序层级我们仅使用虚假键码即可。DwFlags为0表键按下,为2表键抬起。

实现代码如下:
4.PNG

Demo

最后写一个Demo进行简单演示,主要功能如下:(点击运行后将自动执行以下步骤)

0:鼠标移动至左上角目标区域,右键单击打开菜单栏

1:按下O键,打开目标

2:移动鼠标位置至文档区域,向下滑动滚轮

3:单击选择一行

4:按下shift切换至英文,输入1234AbCddFFfHo

5:按下ctrl+s保存
Demo演示.gif

当然,除了这两种函数,我们也可以使用Sendinput函数,该函数集成了键鼠的全部控制,而且也是官方推荐的方式,不过该函数较为复杂,使用时麻烦一些,以后有机会我们再继续学习。

补充

在Demo我们可以选择两种方式触发鼠标移动,下面讲解下稍微复杂的一种:

使用mouse_event函数来触发鼠标移动,如果不启用绝对坐标,则dxdy表示相对当前鼠标坐标移动多少,而想要直接移动到屏幕某一位置,需要启动绝对坐标。此时dwFlags0x8001,相当于0x8000+0x1,前者为启动绝对坐标,后者为鼠标移动。

另外,启动绝对坐标系后显示屏左上角dxdy为(0,0)
右下角dxdy为(65536,65536),想要移动至特定坐标,需要通过获取显示屏长宽信息后再进行换算。
5.PNG

本期就到此结束啦,测试Demo已上传,并包含虚拟键码和扫描代码介绍,感兴趣的同学可以看看,也期望各位大神能帮忙前来指教,进一步分享更多更有趣的程序。
*附件:Demo.rar

分享开源免费,共同学习进步^_^

回帖(1)

许奕

2023-12-12 14:09:02
感谢楼主无私分享
举报

更多回帖

发帖
×
20
完善资料,
赚取积分