アプリケーションを起動する。
exec <command line> [<show> [<wait> [<current directory>]]]
コマンドライン文字列 <command line> に従い、アプリケーションを起動する。
値 | 意味 |
---|---|
-1 | アプリケーションの実行に失敗した。 |
-1 以外 | アプリケーションの終了コード |
値 | 意味 |
---|---|
-1 | アプリケーションの実行に失敗した。 |
0 | アプリケーションの実行に成功した。 |
; 「メモ帳」を起動 exec 'notepad readme.txt' ; 「メモ帳」を最大化表示で起動 exec 'notepad readme.txt' 'maximize' ; 「メモ帳」をカレントディレクトリ指定で起動 exec 'notepad readme.txt' 'show' 0 'c:\usr'
; バッチファイルを起動する tmp='cmd /c c:\upload.bat ' strconcat tmp username1 strconcat tmp ' ' strconcat tmp userpass1 strconcat tmp ' ' strconcat tmp address messagebox tmp 'exec' exec tmp
; ディレクトリを作る getenv "USERPROFILE" userprof getdate logdir "log-%Y%m%d" sprintf2 cmd 'cmd /c mkdir "%s\My Documents\%s"' userprof logdir exec cmd "HIDE"
64bit Windows 上でマクロを実行している場合、WOW64 に対応したアプリケーションを起動すると思わぬ動作をすることがある。
ttpmacro.exe は 32bit なので、32bit のアプリケーションが起動する。アプリケーションによっては 64bit OS 上で 32bit のプロセスが起動されると、64bit のプロセスを起動し直すことがある。
このため <wait> を指定しても、マクロが起動した 32bit のアプリケーションはすぐに終了してしまうため、意図せず次のマクロコマンドに進んでしまうことがある。
この現象を回避するには、以下のように sysnative エイリアスを用いてネイティブのシステムディレクトリのアプリケーションを起動する。
; 失敗する exec 'mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1 ; 成功する exec 'C:\windows\sysnative\mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1