ioripalm 发表于 2014-2-23 12:59:50

如何run并且不激活这个程序的窗口?

run(test.exe)
run后,会自动激活test.exe窗口,如何不让test.exe窗口激活?也就是让run之前激活的窗口一直保持激活状态并且可以运行test.exe

第二个问题:有什么方法可以获得当前激活窗口句柄?

user3000 发表于 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, '', @SW_SHOW)
$handl = WinActivate($aHandl)
$handl2 = WinGetHandle('', '')
MsgBox(0, $aHandl, $handl & @CRLF & $handl2)

ioripalm 发表于 2014-2-26 16:14:37

本帖最后由 ioripalm 于 2014-3-2 19:01 编辑

回复 2# user3000

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