†REXXのどろぬま†
作成開始日 2022.01.18
最終更新日 2022.01.18
rc = SysCreateObject(WPクラス, オブジェクト名, 作成場所, <設定>, <オプション>);
引数の数は5個で、最初の3個は必須、後の2個は省略可能。ただし、省略した場合も引数区切りの「,」は
○ rc = SysCreateObject('WPProgram','MyProg','<WP_DESKTOP>',, ); × rc = SysCreateObject('WPProgram','MyProg','<WP_DESKTOP>'); ※エラーになる
プログラム・オブジェクトの設定のキモは第4引数の<設定>。省略可能だからと言って軽く考えていけない。しかも、これがけっこう面倒な仕様になっていてREXXの知識だけでは全然判らない。詳細はWorkplace Shell Programming Refernce(wps1.inf)を参照。
Aオブジェクト名
B作成場所
C設定:次項参照
Dオプション
これらの設定文字列を「;」で繋げて<設定>に指定する。例えば、プログラム(d:\myprog.exe)と引数(d:\mydata.dat)を指定する場合は次のようになる。ほとんど最少限の指定なのだが、随分と長たらしくなる。設定文字列を適当な変数に入れて可読性を高めないとデバグが大変だ。
各引数の意味
@WPクラス
作成するオブジェクトのクラスを指定する。プログラムなら「WPProgram」、フォルダなら「WPFolder」と言った感じ。ここではプログラム・オブジェクトの作成を考えているので「WPProgram」で良い。
そのプログラム・オブジェクトの名称。任意の文字列で良い。
そのプログラム・オブジェクトを作成する場所。「D:\MYWORK」のようにフルパスで指定しても良いが、「<WP_DESKTOP>」(デスクトップ)や「<WP_STARTUP>」(始動フォルダ)のようにオブジェクトIDを指定しても良い。実験段階では「<WP_DESKTOP>」を推奨。
同じ場所に同名のオブジェクトが既に存在している場合の処理の指定。'U'=更新/'R'=置換/'F'=なにもしない。
<設定>に指定するパラメータ
基本的に、プログラム・オブジェクトの[プロパティ|プログラム(P)]ダイアログに相当する。その他[セッション(S)]や[アイコン(I)]のページに相当する設定も可能。下記以外にも多くの設定項目があるが、ここではいちいち取り上げない。詳細はWorkplace Shell Programming Referance 1(wps1.inf)を参照。
項目名 設定名 用 例 備 考
パスおよびファイル名 EXENAME EXENAME=C:\OS2\E.EXE プログラム名
パラメーター PARAMETERS PARAMETERS=C:\README.TXT コマンドライン引数
作業ディレクトリー STARTUPDIR STARTUPDIR=C:\ カレント・ディレクトリ
セッション PROGTYPE PROGTYPE=PM PM/VIO
アイコン ICONFILE ICONFILE=C:\MYICON.ICO
オブジェクトID OBJECTID OBJECTID=<MYPROG>
オブジェクトのオープン操作 CCVIEW CCVIEW=YES YES/NO/DEFAULT
rc = SysCreat('WPProgram','MyProg','<WP_DESKTOP>','EXENAME=D:\MYPROG.EXE;PARAMETERS=
D:\MYDATA.DAT','R');
使用例
下記の例では、C:\WX3OS2内の全てのEXEファイルのオブジェクトを、デスクトップ上に作成している。その際、オブジェクト名として、ファイル名(拡張子を除く)を使用している。
rc=sysFileTree('C:\WX3OS2\*.EXE',exefile,'FO');
Do n=1 to exefile.0
st=filespec('n',exefile.n);
parse var st objname '.' ext;
say objname;
exe='exename='||exefile.n;
rc = SysCreateObject('WPProgram', objname, '<WP_DESKTOP>', exe, 'R');
End
以下の例では、View(INF表示プログラム)の引数としてC:\BOOKS2\WPS1.INFを指定しているが、作成されたオブジェトは、あたかもINFファイルのオブジェクトのように見える。
obj='Workpalce Shell Programming Reference 1'
exe='exename=c:\os2\view.exe;'
prm='parameters=c:\books2\wps1.inf;'
rc=SysCreateObject('WPProgram',obj,'<WP_DESKTOP>',exe||prm,'R');
【REXXのどろぬま目次】
【ホーム】