トップへ戻る

Autoitプログラミング

プロセスのリスト

AutoIt には ProcessList というプロセスのリスト(名前とPID)を取得する関数があります。

 

取得されたプロセスの情報は配列に代入されます。

 

$array[0][0] = プロセスの合計数

 

$array[n][0] = n番目のプロセス名

 

$array[n][1] = n番目のプロセスのPID

 

#include <Array.au3>

 

$ProcessList = ProcessList()

 

_ArrayDisplay($ProcessList, " プロセスリスト ")

 

 

 

 

実際に実行して結果を確認してみましょう。

プロセスの一時停止と終了

AutoIt には スクリプトを一時停止する関数が2つあります。

 

ProcessWait:指定したプロセスが存在するようになるまでスクリプトの実行を一時停止します。

 

形式:ProcessWait ( "プロセス名(PIDは指定できません)" [, タイムアウト] )

 

ProcessWaitClose:指定したプロセスが存在しなくなるまでスクリプトの実行を一時停止します。

 

形式:ProcessWaitClose ( "プロセス名またはPID" [, タイムアウト] )

 

どちらも使い方は簡単なので詳しくは説明しません。

 

まずノートパッドで試してみましょう。

 

 

ProcessWait("notepad.exe"); notepad.exe が存在するようになるまで一時停止。

 

; notepad.exe が存在するようになったらメッセージボックスを表示。
MsgBox(0, '', "ノートパッドを開きました。3秒後メッセージボックスを終了します。", 3)

 

ProcessWaitClose("notepad.exe"); notepad.exe が存在しなくなるまで一時停止。

 

; notepad.exe が存在しなくなったらメッセージボックスを表示。
MsgBox(0, '', "ノートパッドを閉じました。3秒後スクリプトを終了します。", 3)

 

 

 

 

プロセスの終了

 

ProcessClose:プロセスを終了します。

 

形式:ProcessClose ( "プロセス名またはPID" )

 

 

Sleep(3000); 3秒スリープ

 

ShellExecute("notepad.exe"); ノートパッドを開きます。

 

ProcessWait("notepad.exe"); notepad.exe が存在するようになるまで一時停止。

 

; notepad.exe が存在するようになったらメッセージボックスを表示。
MsgBox(0, '', "ノートパッドを開きました。3秒後メッセージボックスを終了します。", 3)

 

Sleep(3000); 3秒スリープ

 

ProcessClose("notepad.exe"); notepad.exe を終了します。

 

ProcessWaitClose("notepad.exe"); notepad.exe が存在しなくなるまで一時停止。

 

; notepad.exe が存在しなくなったらメッセージボックスを表示。
MsgBox(0, '', "ノートパッドを閉じました。3秒後スクリプトを終了します。", 3)

 

 

 

 

実際に実行して結果を確認してみましょう。

ファイルの実行

AutoIt でファイルを実行するには次の関数を使用します。

 

Run 、 RunWait 、 RunAs 、 RunAsWait 、 ShellExecute 、 ShellExecuteWait

 

Run、ShellExecute、RunWait、ShellExecuteWait は現在のユーザーとしてファイルを実行します。

 

RunAs、RunAsWait は別のユーザーとしてファイルを実行します。

 

ここでは Run、 RunWait、 ShellExecute 、ShellExecuteWait の4つの関数について説明します。

 

まず Run 関数でノートパッドを実行してみましょう。

 

 

; ノートパッドを最大化で実行。
$PID = Run(@WindowsDir & "\Notepad.exe", "", @SW_MAXIMIZE)

 

MsgBox(0, "", " PID: " & $PID)

 

 

 

 

一旦ノートパッドを閉じ、 RunWait 関数でノートパッドを実行してみましょう。

 

 

; ノートパッドを最大化で実行。
$val = RunWait(@WindowsDir & "\Notepad.exe", "", @SW_MAXIMIZE)

 

MsgBox(0, "", " 終了コード: " & $val)

 

 

 

違いがわかりましたか?

 

Run 関数はノートパッドを実行した後すぐに次のコードを実行しています。

 

RunWait 関数はノートパッドを終了しない限り、次のコードを実行しません。

 

DOSコマンドを実行するには次のように書きます。

 

 

Run(@ComSpec & " /k help | more ")

 

 

 

 

@ComSpec は Windows の環境変数 %comspec% で「C:\Windows\System32\cmd.exe」という意味です。

 

Run と RunWait は拡張子 EXE, BAT, COM, PIF のみを実行できます。

 

これら4種類の拡張子は実行可能なファイルで、それ以外の拡張子を指定すると実行に失敗します。

 

実行可能なファイルでない場合、ShellExecute 、ShellExecuteWait 関数を使用します。

 


ShellExecute(@WindowsDir & " \win.ini")

 

$val = ShellExecuteWait(@WindowsDir & " \win.ini")

 

MsgBox(0, "", " 終了コード: " & $val)

 

 

 

※ShellExecute 、ShellExecuteWait 関数は実行可能なファイルも実行できます。