首页 新闻 搜索 专区 学院

C#中的SendKeys.SendWait 为什么对LabView程序界面输入框无效

0
[已解决问题] 解决于 2020-09-24 15:43

C# 中的SendKeys.Send SendWait 对文本文件 以及其他可输入文本框都有效 但是对LabView写的窗体文本框 就无效 没有反应呢 又经验的朋友求指点一二 问题出在哪里

权啊权的主页 权啊权 | 菜鸟二级 | 园豆:204
提问于:2020-09-14 14:05
< >
分享
最佳答案
0

没具体试过labview。在游戏模式很多也是无效的,因为实现方式不一样。

视图框架行为不是非要从窗口消息实现(焦点、最小化等等一些原则上肯定是要处理的),放到工业视图领域 这个方面应该也是跟游戏一样,消息模式不太适用,会造成资源分配和阻塞等等问题。

你玩玩模拟器游戏对此将会有深刻感受。

奖励园豆:5
花飘水流兮 | 专家六级 |园豆:12486 | 2020-09-14 14:37

非常感谢你的回复 我最初的猜测也是LabView的双层结构 外层的视图框架的确与.Net下的窗体控件不同 并且通过Spy++也只能抓取到整体程序的Handle Class 等等 并不能抓取到文本框 我想寻求可以对视图框架文本框编辑的方法 去模拟键盘输入 .net下的SetForegroundWindow方法也无法为labview文本框获取焦点

权啊权 | 园豆:204 (菜鸟二级) | 2020-09-14 14:43

@权啊权:

你试试操控“键盘设备”和“鼠标设备”。

以前游戏模拟是通过这样实现的,实现代码通过之前的模拟精灵实现代码来的,你自己查一下。

抓不到Handle是正常的,作为一个专业的工业门类视图体系,如果从Control这么庞大臃肿的控件而来,基本上就玩完了,游戏也是一样。

而且现在的QQ等等,都不再采用传统GDI Handle模式,而是使用DirectUI模式,都抓不到Button之类的Handle。

花飘水流兮 | 园豆:12486 (专家六级) | 2020-09-14 14:50

打上引号不是指具体物理设备,是系统的一个虚拟层,键盘是个256的byte[]。用这个还实现过QQ自动骂架。qq这些是用的消息的,消息也是可以完成的。

花飘水流兮 | 园豆:12486 (专家六级) | 2020-09-14 14:56
其他回答(2)
0

LabView写的窗体文本框没有句柄。就是整个窗体只有一个句柄,下面的控件是没有句柄的,跟Qt程序是一样的。

数据酷软件 | 园豆:130 (初学一级) | 2020-09-14 15:34
0

驱动级模拟鼠标键盘:
https://github.com/tiancai4652/Pons

猝不及防 | 园豆:2172 (老鸟四级) | 2020-09-15 09:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册