お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"DOS窓の出力を得る:batファイル編"

この発言に対し以下のコメントが寄せられています
#01340 大怪獣もぎゃ さん RE:DOS窓の出力を得る:pipe編

DOSプロンプトでプログラムを動作させて、その結果を取得します。 function getLocalUniqueName:string; //日付と時刻を元に「とりあえずユニークな」名前を生成する。 var Year, Month, Day, Hour, Min, Sec, MSec: Word; begin DecodeDate(now,year,month,day); DecodeTime(now,Hour, Min, Sec, MSec); result := format('~%s%d%d%d%d%d%d%d', [ChangeFileExt( ExtractFileName(Application.ExeName), '' ), Year,Month,Day,Hour,Min,Sec,MSec]); end; function getTempDir:string; //Windowsのテンポラリディレクトリ名を返す。 const MAX_PATH = 255; var Buf: array[0..(MAX_PATH - 1)] of Char; begin result := ''; if GetTempPath(MAX_PATH, buf) > 0 then result := Buf; end; function getProcessResult(process:string):string; var uniqueName,batFileName,resFileName:string; batFile,resultFile:TStringList; SI :TStartupInfo; PI :TProcessInformation; begin result := ''; uniqueName := getLocalUniqueName; batFileName := getTempDir+uniqueName+'bat.bat'; resFileName := getTempDir+uniqueName+'res.dat'; //nifty:FDELPHI/MES/06/32648 雲松さん SpecialThanks! //・TStlingListに実行したいDOSコマンドを追加し、BATファイルとして保存 batFile:=TStringList.create; try batFile.Add(process+' > '+ resFileName); batFile.SaveToFile(batFileName); finally batFile.Free; end; //・CreateProcessでそのファイルを実行 GetStartupInfo(SI); SI.dwFlags := STARTF_USESHOWWINDOW; SI.wShowWindow := SW_HIDE; if not CreateProcess(PChar(batFileName), nil, nil, nil, False, CREATE_DEFAULT_ERROR_MODE,nil, nil, SI, PI) Then Raise Exception.Create(batFileName+'を起動することができませんでした:' + IntToStr(GetLastError)); while WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT Do Application.ProcessMessages; //起動したプロセスの終了を待って。。。 resultFile:=TStringList.create; try resultFile.LoadFromFile(resFileName); result := resultFile.Text; finally resultFile.Free; end; //・必要が有れば、処理後、そのファイルを削除 DeleteFile(batFileName); DeleteFile(resFileName); end; 2001/06/08(Fri) 04:43pm CQK00014 大怪獣もぎゃ  Original document by 大怪獣もぎゃ 氏 ID:(CQK00014)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum