# exec

アプリケーションを起動する。

    exec <command line> [<show> [<wait> [<current directory>]]]

## 解説

コマンドライン文字列 <command line> に従い、アプリケーションを起動する。

<show> パラメータには以下の文字列を指定することができる。

    hide
    minimize
    maximize
    show ;default parameters when no show command specified.

<wait> パラメータに 1 を指定すると、起動したアプリケーションが終了するまで待つ。アプリケーションの終了コードが result システム変数に格納される。(バージョン 4.63以降)

<current directory> パラメータは、カレントディレクトリを指定することができる。(バージョン 4.78以降)

## 例

    ; 「メモ帳」を起動
    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