找回密码
 加入
搜索
查看: 3792|回复: 6

[GUI管理] 如何用脚本调用另一个程序,根据该程序某个控件的状态做出反应?[已解决]

  [复制链接]
发表于 2010-8-16 16:29:15 | 显示全部楼层 |阅读模式
本帖最后由 speedneeder 于 2010-8-17 08:45 编辑

如题,用au3编写脚本调用一个已编好的程序,该程序上有一个按钮控件,一开始显示的文本为 play,点击之后显示 stop,play完毕之后又变回play,而每次play的时间不一定,需要用au3的脚本判断该控件上的文本是否变为play。
是否只有用循环不断读取该控件上的文本这样一种方法?这样会不会造成资源极大的浪费?有没有其他方法,比如控件文本发生变化时发送一个消息之类的?(该程序无法修改)

评分

参与人数 1金钱 +10 收起 理由
pusofalse + 10 感谢主动给标题加“已解决”字样。

查看全部评分

发表于 2010-8-17 00:08:30 | 显示全部楼层
截获第三方程序消息进行处理,au3自身还做不到吧,如果au3能编写dll就好了,顶一下,盼高人解决,共同学习。
发表于 2010-8-17 00:24:08 | 显示全部楼层
循环判断时间不要太短应该也不怎么占用资源的,你说的那种情况不太可能实现吧
发表于 2010-8-17 01:01:38 | 显示全部楼层
本帖最后由 pusofalse 于 2010-8-17 01:39 编辑

Q1: AU3能获取其他程序上的控件句柄吗?
Q2: 根据句柄能读取到控件上的文本信息吗?
Q3: AU3能实现HOOK吗?

A1: 能。
A2: 能。
A3: 能。

我就想问下,3个主要问题, AU3既然都能解决,那为何就实现不了呢??
将按钮上的文字改变时,必须要调用的API函数是SendMessage(发送WM_SETTEXT消息),只要挂钩SendMessage,判断一下消息接收者和消息值不就行了吗?
或者用SetWindowLong的-4号功能将控件的消息接收地址改变一下,改成自己定义的函数,在自定义函数中截取WM_SETTEXT消息,截取到的同时并用SendMessage通知自己的程序。

Q4: AU3能创建文件吗?
Q5: AU3能写二进制文件吗?

A4: 能。
A5: 能。

既然AU3能创建文件,也能写入二进制数据,那AU3为何就编写不了DLL呢??

郁闷。 - -|||
发表于 2010-8-17 08:27:31 | 显示全部楼层
感谢P大提供思路和详细的解决办法,这个问题困扰很久了。

评分

参与人数 1威望 +5 金钱 +10 收起 理由
pusofalse + 5 + 10

查看全部评分

 楼主| 发表于 2010-8-17 08:46:14 | 显示全部楼层
感谢高人解答

评分

参与人数 1威望 +5 收起 理由
pusofalse + 5

查看全部评分

发表于 2010-8-17 19:12:18 | 显示全部楼层
回复 5# zps26


    就冲你不继续发问,不索要现成代码,而是选择自己独立解决,给你加分。独立思考的过程总是快乐的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 10:37 , Processed in 0.088805 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表