找回密码
 加入
搜索
查看: 7448|回复: 16

能向隐藏的窗口发送消息吗?

[复制链接]
发表于 2008-11-4 02:09:41 | 显示全部楼层 |阅读模式
就是我用AU3运行了一个程序,我设成了隐藏,那程序里有对框,我能向那对话框里发送消息吗?
发表于 2008-11-4 09:43:33 | 显示全部楼层
用控件函数!
 楼主| 发表于 2008-11-6 00:42:32 | 显示全部楼层
能来个例子吗?

比如操作记事本.
发表于 2008-11-6 08:54:59 | 显示全部楼层
  为了让你能看到结果:

Run('notepad.exe','',@SW_MINIMIZE)
WinWait('无标题 - 记事本','')
ControlSend('无标题 - 记事本','','Edit1','HELP YOU')
;~ 或
ControlSetText('无标题 - 记事本','','Edit1','以后要多看帮助')
 楼主| 发表于 2008-11-7 00:12:14 | 显示全部楼层
我说的是隐藏~不是最小化.

WinWait 是要有窗口,并且是当前激活的.

隐藏的是没窗口,怎么操作?你误解我的意思了.
发表于 2008-11-7 01:02:02 | 显示全部楼层
4楼的并没有误解。而误解的只是楼上的。
发表于 2008-11-7 02:28:50 | 显示全部楼层
4楼写的没有错只是楼没有理解吧!
发表于 2008-11-7 16:29:49 | 显示全部楼层
Run('notepad.exe')
WinWait('无标题 - 记事本','')
sleep(1000)
WinSetState ( '无标题 - 记事本', "", @SW_hide)
ControlSetText('无标题 - 记事本','','Edit1','以后要多看帮助')
;~ ControlSend('无标题 - 记事本','','Edit1','HELP YOU')
sleep(2000)
WinSetState ( '无标题 - 记事本', "", @SW_show)
发表于 2008-11-7 16:56:39 | 显示全部楼层
那么当用 ControlSend 和 ControlSetData 传送时有 乱码 怎么办啊?
还有别的方法吗?
发表于 2008-11-7 18:16:46 | 显示全部楼层
发现一个现象,ControlSetText发送消息后,记事本不认为已经改变内容了。
发表于 2008-11-7 22:45:54 | 显示全部楼层
我也正想问问这个问题~~我的是这样,但还是有窗口,大家来说说看。
Run("ghost.exe","",@SW_HIDE)
WinWaitActive("OneKey Ghost Y3.2", "还原系统")
ControlSetText("OneKey Ghost Y3.2", "还原系统", "TEdit1", $varPath)
发表于 2008-11-8 20:54:01 | 显示全部楼层
我为什么就是不能隐藏运行~~
要自动运行的程序总是弹出来:

Dim $varGhost,$varPath,$handle
$varGhost=IniRead("setup.ini","ghostVer","ghost","")
$varPath=iniread("setup.ini","paths","path","")
Run("ghost.exe","",@SW_HIDE)
WinWait("OneKey Ghost Y3.2", "还原系统")
AutoItSetOption("WinTitleMatchMode", 4)
$handle = WinGetHandle("classname=OneKey", "还原系统");获取窗口的句柄
ControlSetText($handle, "还原系统", "TEdit1", $varPath)

我现在已改成用控件输入,又获取窗口标题为句柄了,还是不行,郁闷。

有没有老师来实例说说呢~~

[ 本帖最后由 yellow881 于 2008-11-8 20:59 编辑 ]
发表于 2008-11-8 22:24:25 | 显示全部楼层
原帖由 xsw123 于 2008-11-7 18:16 发表
发现一个现象,ControlSetText发送消息后,记事本不认为已经改变内容了。

嗯,是啊,所以古人云,温故而知新,就是要让我们不断的尝试...有时候一些问题是靠试出来的
发表于 2008-11-8 22:34:06 | 显示全部楼层
原帖由 yellow881 于 2008-11-7 22:45 发表
我也正想问问这个问题~~我的是这样,但还是有窗口,大家来说说看。
Run("ghost.exe","",@SW_HIDE)
WinWaitActive("OneKey Ghost Y3.2", "还原系统")
ControlSetText("OneKey Ghost Y3.2", "还原系统", "TEdit1",  ...

不知道你运行这个程序是怎么样的,所以不能有什么好办法提出,但如果你想不显现窗口起码不要用WinWaitActive(),用WinWait()或干脆按已知标题连续的设置隐藏WinSetState('OneKey Ghost Y3.2','',@SW_HIDE)直到确定窗口已经加载完为止...
发表于 2008-11-9 09:23:54 | 显示全部楼层
很感谢楼上的老师,用你的方法是成功了,但另一个问题又出来了
就是关不掉窗口,用了WinKill 关也不行

[ 本帖最后由 yellow881 于 2008-11-9 09:29 编辑 ]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-7 15:02 , Processed in 0.087146 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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