特定のプロセスが存在するかチェックしたり、優先度を変更したり、終了させたりする
Process, Exist, PID-or-Name Process, Close, PID-or-Name Process, Priority, PID-or-Name, NewPriority Process, Wait, PID-or-Name, Seconds Process, WaitClose, PID-or-Name, Seconds
引数名 | 説明 |
---|---|
Cmd |
以下のコマンド名のどれかを指定
|
PID-or-Name | プロセスIDかプロセス名を指定する。 |
PID-or-Nameにマッチするプロセスが見つかり、処理に成功した場合は、そのプロセスのPIDになる。
プロセスが見つからなかったり、処理に失敗した場合は、「0」になる。
コマンドがWaitCloseの場合のみ、指定時間が経過しても一致するプロセスが残っていた場合そのプロセスのPIDになり、プロセスが存在しなくなった場合、「0」になる。
WaitとWaitCloseは、100ミリ秒ごとに指定プロセスの存在をチェックする。
条件を満たしたら即座に待機を終了し、ErrorLevelを変更し、スクリプトの次の行の実行に移る。
待機している間は、他のスレッドが割り込むことができる。
WindowsNT4.0でこのコマンドを実行するには、PSAPI.DLL(AutoHotkeyに同梱)が必要。
Run, WinGet, WinClose, WinKill, WinWait, WinWaitClose, IfWinExist
; Example #1: Run Notepad.exe, , , NewPID Process, priority, %NewPID%, High MsgBox The newly launched notepad's PID is %NewPID%.
; Example #2: Process, wait, Notepad.exe, 5.5 NewPID = %ErrorLevel% ; Save the value immediately since ErrorLevel is often changed. if NewPID = 0 { MsgBox The specified process did not appear within 5.5 seconds. return } ; Otherwise: MsgBox A matching process has appeared (Process ID is %NewPID%). Process, priority, %NewPID%, Low Process, priority, , High ; Have the script set itself to high priority. WinClose Untitled - Notepad Process, WaitClose, %NewPID%, 5 if ErrorLevel <> 0 ; The PID still exists. MsgBox The process did not close within 5 seconds.
; Example #3: A hotkey to change the priority of the active window's process: #z:: ; Win+Z hotkey WinGet, active_pid, PID, A WinGetTitle, active_title, A Gui, 5:Add, Text,, Press ESCAPE to cancel, or double-click a new`npriority level for the following window:`n%active_title% Gui, 5:Add, ListBox, vMyListBox gMyListBox r5, Normal|High|Low|BelowNormal|AboveNormal Gui, 5:Add, Button, default, OK Gui, 5:Show,, Set Priority return 5GuiEscape: 5GuiClose: Gui, Destroy return MyListBox: if A_GuiControlEvent <> DoubleClick return ; else fall through to the next label: 5ButtonOK: GuiControlGet, MyListBox Gui, Destroy Process, Priority, %active_pid%, %MyListBox% if ErrorLevel = 0 MsgBox Error: Its priority could not be changed to "%MyListBox%". else MsgBox Success: Its priority was changed to "%MyListBox%". return