お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"RE:DOS窓の出力を得る:pipe編"

この発言は
#01339 大怪獣もぎゃ さんのDOS窓の出力を得る:batファイル編
に対するコメントです

こっちの方は、Pipeという機能を使ってます。 こっちの方がスマートですが、batファイルを使うと、 DOSコマンドも使えるから私はbatファイルがお好みです^^; 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 getProcessResultbyPipe(process:string):string; const BUFFER_SIZE = 4000; var si: TStartUpInfo; pi: TProcessInformation; sa: TSecurityAttributes; LBuffer: string; hReadPipe, hWritePipe: THandle; LSize: Cardinal; begin GetStartUpInfo(si); //ウィンドウの表示・非表示 si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := SW_HIDE; //TSecurityAttributes構造体の設定 sa.nLength := SizeOf(sa); sa.bInheritHandle := True; sa.lpSecurityDescriptor := nil; //匿名パイプの作成 CreatePipe(hReadPipe, hWritePipe, @sa, BUFFER_SIZE); si.dwFlags := si.dwFlags or STARTF_USESTDHANDLES; si.hStdOutput := hWritePipe; //標準出力と //si.hStdError := hWritePipe; //標準エラー //プログラム起動 if not CreateProcess(PChar(process),nil, nil, nil, True, 0, nil, nil, si, pi) then begin Raise Exception.Create(process+'を起動することができませんでした:' + IntToStr(GetLastError)); end; //終了待ち while WaitForSingleObject(pi.hProcess, 100) = WAIT_TIMEOUT do begin Sleep(100); end; SetLength(LBuffer, BUFFER_SIZE); CloseHandle(hWritePipe); ReadFile(hReadPipe, PChar(LBuffer)^, BUFFER_SIZE, LSize, nil); SetLength(LBuffer, LSize); result := LBuffer; CloseHandle(hReadPipe); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); end; 2001/06/08(Fri) 04:52pm CQK00014 大怪獣もぎゃ  - FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/06/10 - Original document by 大怪獣もぎゃ 氏 ID:(CQK00014)



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

Copyright 1996-2002 Delphi Users' Forum