|
カテゴリ:UWSC
inputにタイトルを表示するの新バージョン。
前回はinputボックスだけを考えてみたけど、ほかのダイヤログも変えられないかなあと思って。 そこで、考えたのは一時UWSCファイルを作って呼び出してみてはどうか。 CallSub関数を作ってみたら、結構うまくいきました。 第二引数をtrueにすると、サブ側で stdout(出力文字列) を実行することで、呼び出し元に値(文字列オンリー)を返せます。 inputの使用例はこんな感じ res=CallSub(sample,true) msgbox( res ) textblock sample //サブプログラム option DLGTITLE="入力してください" //ダイヤログタイトルの変更 stdout(input( "サブプログラムからの入力プロンプト","既定値",,60,60 )) endtextblock CallSubUwsc.uws function CallSub( AllText, isFunction=false ) fso=CreateOleObj("Scripting.FileSystemObject") repeat tmp=fso.GetTempName tempuws=Copy(tmp, 1, length(tmp)-4)+".uws" tempuws=fso.GetSpecialFolder(2) + "\" + tempuws until !fopen(tempuws, f_exists) if isFunction UWSText=AllText + "<#CR>" + stdout_uws else UWSText=AllText endif fd=fopen( tempuws, f_write16 ) fput( fd, UWSText, f_alltext ) fclose( fd ) UWSCEXE=GET_UWSC_DIR+"\uwsc.exe" if isFunction result=doscmd( UWSCEXE + " " + tempuws +"|more" )//このmoreを外すとなぜかエラーになります。ご注意を。 else exec( UWSCEXE + " " + tempuws ) endif deletefile(tempuws) textblock stdout_uws procedure StdOut(text) with CreateOleObj("Scripting.FileSystemObject") .GetStandardStream( 2 ).WriteLine( text ) endwith fend endtextblock fend お気に入りの記事を「いいね!」で応援しよう
最終更新日
2020.11.25 13:45:08
コメント(0) | コメントを書く
[UWSC] カテゴリの最新記事
|