†Sibylのお部屋†
作成開始日 2022.01.11
最終更新日 2022.01.12
構文:EXEC(コマンド,引数); 用例:@EXEC('C:\OS2\E.EXE','D:\MYDATA.TXT'); AEXEC('C:\OS2\CMD.EXE','/K DIR'); 戻値:id:LongWord(rc:=DosExitCode(id)形式で使用する筈だがフリーズする(u_u;)) :DosError:整数型(WordなのかLongWordなのかULongなのか型が判らん) こちらは正常取得可能だが、果たして意味があるのか判らん…最初の例@では、システム・エディター(E.EXE)を起動して、D:\MYDATA.TXTというテキストファイルを読み込んでいる。PMプログラムはこの形式が標準。
2番目の例Aではコマンドインタープリタ(CMD.EXE)を起動して、DIRコマンドを実行している。コマンドラインで起動するプログラム(UNZIP等)はこちらの形式を使用する。なお、「/K」「/C」オプションに関しては、OS/2コマンドリファレンス参照。
【注意】外部プログラムを実行すると、それを呼び出したオブジェクトにはOnExitイベントが、また外部プログラムから戻るときにはOnEnterイベントが発生する。これらのイベントハンドラは意識せずに実行されてしまうため、バグの発生時には原因究明に苦労する。
このほか、EXECでSTARTコマンドを指定するとか、プログラムの起動方法にはいろいろあって、ウィンドウがアクティブで起動するのか、バックグラウンド起動なのか、あるいはモーダル(コマンド実行中に本体側の機能を停止するか否か)とか、けっこう厄介な問題が多いが、何をどうすればどうなるのか全部忘れた。ただ、前面/後面問題は結局解決できなかったような記憶がある。
このあたり、グローバル変数で制御できる部分もあるようだ。
外部プログラムを表示するか否か | True/False
| たぶん、並行動作の許可だと思うが | True/False
| |