を実行中にコンソールアプリケーションの出力をお読みください。私はコンソールアプリケーションを起動し、それがコンソールアプリケーションによって印刷されるので、出力を読みたいと思います。デルファイ6 - それは実行されているように私は、コンソールアプリケーションの出力を読み込むにはどうすればよい
答えて
何このsolutionについて。
はEDIT:リンクは、この解決策につながる(軽く読みやすさのためのリファクタリングとwith
の使用を削除する):
// The example runs 'chkdsk.exe c:\' and displays the output to Memo1.
// Put a TMemo (Memo1) and a TButton (Button1) on your form. Put this
// code in the OnCLick event procedure for Button1:
procedure TForm1.RunDosInMemo(DosApp:String;AMemo:TMemo) ;
const
ReadBuffer = 2400;
var
Security : TSecurityAttributes;
ReadPipe,
WritePipe : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
Apprunning : DWord;
begin
Security.nlength := SizeOf(TSecurityAttributes) ;
Security.binherithandle := true;
Security.lpsecuritydescriptor := nil;
if Createpipe (ReadPipe, WritePipe, @Security, 0) then
begin
Buffer := AllocMem(ReadBuffer + 1) ;
FillChar(Start,Sizeof(Start),#0) ;
start.cb := SizeOf(start) ;
start.hStdOutput := WritePipe;
start.hStdInput := ReadPipe;
start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
start.wShowWindow := SW_HIDE;
if CreateProcess(nil,
PChar(DosApp),
@Security,
@Security,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
start,
ProcessInfo) then
begin
repeat
Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100);
Application.ProcessMessages;
until (Apprunning <> WAIT_TIMEOUT) ;
repeat
BytesRead := 0;
ReadFile(ReadPipe,Buffer[0],
ReadBuffer,BytesRead,nil) ;
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer) ;
AMemo.Text := AMemo.text + String(Buffer) ;
until (BytesRead < ReadBuffer) ;
end;
FreeMem(Buffer) ;
CloseHandle(ProcessInfo.hProcess) ;
CloseHandle(ProcessInfo.hThread) ;
CloseHandle(ReadPipe) ;
CloseHandle(WritePipe) ;
end;
end;
procedure TForm1.Button1Click(Sender: TObject) ;
begin
RunDosInMemo('chkdsk.exe c:\', Memo1) ;
end;
私は通常、この移植されたFPCのコードを使用します。http://www.stack.nl/~marcov/processdelphi.zip
それは含まれてい外部プログラムを制御するクラス(これは、Lazarusがcmdlineコンパイラや他のプログラムを呼び出すために使用するクラスです)。
ドキュメントはここですが、デルファイポートは少し古いです、そうではないすべての文書のプロパティは上記のバージョンに存在している場合があります。
これは素晴らしいですね!最近FPCのバージョンで –
、最も単純なシナリオのいくつかを固定いくつかの簡単な手順は、()runCommand関数」として追加されています –
Tプロセスユニットを使用して、マルコの答えにほんの少しの追加は、徹底的に、私は、これはそれを行うための最も簡単な方法であると考えてい
hereを説明しています。がんばろう!リンクをたどって、それだけでリンクは本当に良い答えではない人のための
- 1. Windows XPおよびWindows 7でシステムオーディオ出力を読み込むにはどうすればよいですか?
- 2. Delphi XE4がCodeSiteを読み込まないようにするにはどうすればよいですか?
- 3. ランダムなレベルを読み込むにはどうすればよいですか?
- 4. QtDesignerでQMovieを読み込むにはどうすればよいですか?
- 5. 実行中にスペースを読み取れるようにするにはどうすればよいですか?
- 6. HttpServletReponses出力ストリームを読み込むにはどうすればよいですか?
- 7. テキストファイルを読み込み、Prologのファイルに出力するにはどうすればよいですか?
- 8. プロパティファイルを読み込むようにLog4jを設定するにはどうすればよいですか?
- 9. メインコンテンツ領域にコンテンツを読み込むドロップダウンを行うにはどうすればよいですか?
- 10. ウェブサイトの読み込みをよりきれいにするにはどうすればよいですか?
- 11. ページの読み込み時にKnockout.js関数が実行されないようにするにはどうすればよいですか?
- 12. ページ読み込み時にこのJavaScriptスクリプトを実行するにはどうすればよいですか?
- 13. コンソールで1つのキー入力を待って読み込むにはどうすればよいですか?
- 14. csv.DictReaderでS3に保存されたcsvを読み込むにはどうすればよいですか?
- 15. パイプ出力を実行するにはどうすればよいですか?
- 16. Blockly変数をプログラムで読み込んで読み込むにはどうすればよいですか?
- 17. iOSアプリケーションでファイルを読み込んで読み込むにはどうすればよいですか?
- 18. python3xはカルマから端末出力を読み込むにはどうすればいいですか?
- 19. ページ読み込み前にJavascript機能を実行するにはどうすればよいですか?
- 20. プログラムで読み込まれたストーリーボードでセグを実行するにはどうすればよいですか?
- 21. 出力がそれぞれ無限に実行される複数のコマンドの出力を抑制するにはどうすればよいですか?
- 22. Perl 6のドキュメントを$ * REPOのように読むにはどうすればよいですか?
- 23. 私はこのウェブロジック・ログ・ファイルを読み込むにはどうすればよい - 回
- 24. Elliptic Curve PEMでエンコードされた秘密鍵を読み込むにはどうすればよいですか?
- 25. C++で入力ファイルを文字列配列に読み込むにはどうすればよいですか?
- 26. テキストファイルを読み込んでコンソールウィンドウに出力するにはどうすればよいですか? Java
- 27. Objective-CでPHP配列を読み込むにはどうすればよいですか?私はPHPで
- 28. ファイルから複数の行のデータをPythonに読み込むにはどうすればよいですか?
- 29. jsonのローカルファイルを読み込むにはどうすればいいですか?
- 30. phpのファイルを読み込むにはどうすればいいですか?
素敵な提案は、以下を参照してください。http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links - 他の - 本当に良い答え – Argalatyr
私はリンクからコードを投稿しました。 – Mick
@Mick:あなたは新しい答えでそれをやっている間、私は古いものを編集していました。誰かが私の編集をロールバックする必要があると感じたら、気をつけてください。 – Argalatyr