2014-07-13 78 views
1

以下代碼打開記事本,然後minimizes它。它工作正常:MsMBox後WinMinimize PID

!^m:: 
Run, Notepad.exe,,USEERRORLEVEL MAX, PID 
WinWait, ahk_pid %pid% 
WinMinimize, ahk_pid %PID% 
return 

但是如果我添加一個MsgBox最小化記事本窗口顯示之前的PID,則後者沒有得到最小化:

!^m:: 
Run, Notepad.exe,,USEERRORLEVEL MAX, PID 
WinWait, ahk_pid %pid% 
MsgBox OK %PID% 
WinMinimize, ahk_pid %PID% 
return 

爲什麼?

睡眠沒有幫助:

!^m:: 
Run, Notepad.exe,,USEERRORLEVEL MAX, PID 
WinWait, ahk_pid %pid% 
MsgBox OK %PID% 
Sleep, 2000 ; 2 seconds 
WinMinimize, ahk_pid %PID% 
return 

我使用的是Windows 7 SP1 64位旗艦版和AHK 1.1.13.01(2013年10月11日)。我有與版本v1.0.48.05和版本v1.1.15.02相同的問題。我試過的所有AHK版本都是32位的。


編輯:

!^b::WinMinimize, ahk_pid 9156甚至不工作。 (9156是一個有效的PID)

繼MCL的建議,我也失敗嘗試:

!^t:: 
PID = 11692 
hwnd := WinExist("ahk_pid " pid) 
WinMinimize, ahk_id %hwnd% 
return 
+1

對我來說,你的腳本可以用Win7的SP1 64位專業版和32位AHK v1.1.15.00 – hippibruder

+1

我跑AHK在WinXP SP3兼容模式和提升權限 – hippibruder

+0

@hippibruder謝謝,我升級我的AHK到最新版本,我仍然有同樣的問題。 '!^ b :: WinMinimize,ahk_pid 9156'是否適合你? (用一些現有的PID取代9156)在我的電腦上,它沒有。 –

回答

0

使用該代碼(這是測試工作):

!^m:: 
Run, Notepad.exe,,MAX, PID 
CheckWin: 
IfWinExist, Untitled - Notepad 
{ 
    WinWait, Untitled - Notepad 
    MsgBox OK %PID% 
    WinMinimize, Untitled - Notepad 
} 
else 
{ 
    Goto, CheckWin 
} 
return 

WinWaitWinMinimize命令無法使用進程ID(PID)。在我的代碼中,我使用WinTitle和這些命令。

我正在使用IfWinExist命令來確保notepad.exe已經啓動,並且只有在使用WinWaitWinMinimize命令後才能啓動。

http://ahkscript.org/(當前版本)下載新版本的AutoHotkey。 autohotkey.com的AutoHotkey已過時!