找回密码
 加入
搜索
查看: 2867|回复: 2

[AU3基础] 如何run并且不激活这个程序的窗口?

[复制链接]
发表于 2014-2-23 12:59:50 | 显示全部楼层 |阅读模式
run(test.exe)
run后,会自动激活test.exe窗口,如何不让test.exe窗口激活?也就是让run之前激活的窗口一直保持激活状态并且可以运行test.exe

第二个问题:有什么方法可以获得当前激活窗口句柄?
发表于 2014-2-23 18:51:47 | 显示全部楼层
回复 1# ioripalm
#include <WinAPIEX.au3>
$iPid = Run('notepad.exe', '', @SW_HIDE)
Sleep(2000)
$aHandl = _WinAPI_EnumProcessWindows($iPid, 0)
If Not IsArray($aHandl) Then Exit
WinSetState($aHandl[1][0], '', @SW_SHOW)
$handl = WinActivate($aHandl[1][0])
$handl2 = WinGetHandle('[ACTIVE]', '')
MsgBox(0, $aHandl[1][0], $handl & @CRLF & $handl2)
 楼主| 发表于 2014-2-26 16:14:37 | 显示全部楼层
本帖最后由 ioripalm 于 2014-3-2 19:01 编辑

回复 2# user3000

我试了很多那种只弹出一个窗口的程序,用@SW_HIDE的确可以隐藏界面并且它不获得激活焦点,但是有些程序在启动的时候会先调用另外一个程序先启动,后启动的这个程序的本身特质会自动获得焦点,虽然激活的调用程序也是隐藏,但是在后台会获得焦点,敲击键盘就会将文字发送到这个看不见但是获得焦点的窗口上面去了。
我现在的解决方式只能是先BlockInput(1)后阻止用户误敲键盘输入文字到激活窗口上面,再激活别的不会导致误操作的窗口让后台窗口这个失去焦点,再BlockInput(0)将键盘交给用户。
第二个问题也没解决,你是激活了这个窗口再获取这个窗口的句柄,我的要求是不激活任何窗口,直接获得现在正在激活的这个窗口的句柄!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 00:44 , Processed in 0.077988 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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