DelphiでF4を入力パイプにCMDプロセスに渡す方法を教えてください。 1. CommandTextを(CMDウィンドウの表現を表示TMemoオブジェクト):私は、フォーム上の唯一の4オブジェクトを持ってsimpliityについてPipes in Delphi for Command PromptDelphiの入力パイプCMDプロセスにF4を送信
:私はここで答えに非常によく似ているコードを使用してきました。 2. CommandRun(実行するCMD行が入力されるTEdit)。 3. SendBtn(CMDにCommandRun.Textを送信するために使用されるTButton)。 3. ExitBtn(プログラムを終了するために使用されるTButton)。ここで
は私の書き込みパイプであり、手続きを送る:
ライトパイプ
procedure WritePipeOut(OutputPipe: THandle; InString: string);
// writes Instring to the pipe handle described by OutputPipe
var
byteswritten: DWord;
AnsiBuf: AnsiString;
begin
// most console programs require CR/LF after their input.
if InString = 'f4' then AnsiBuf := #113#13#10
else AnsiBuf := AnsiString(InString) + #13#10;
WriteFile(InputPipeWrite, AnsiBuf[1], Length(AnsiBuf), byteswritten, nil);
end;
はDIRのような
procedure TForm1.SendBtnClick(Sender: TObject);
begin
WritePipeOut(OutputPipeWrite, CommandRun.Text);
CommandRun.Text := '';
CommandRun.SetFocus;
end;
コマンドが正常に通過しているとの結果が正常に「エコー」されている送信しますCommandTextへ。 私の問題は、パイプ経由でプログラムを起動していることです。通常のCMDウィンドウでは、F4キーを押してのみプログラムを停止できます。 私はパイプを介してこのF4プレスを複製する必要があり、これを達成する方法を理解できません。どんな指導にもとても感謝しています。
ありがとう@David。あなたは私の恐れを確認しました。私はsledgehammerを使用してtaskkill.exe/F/IM MyApp.exeを使用する必要があるように見えます – Paul
なぜ外部プロセスで何をしていますか?なぜAPI関数を呼び出せないのですか? –
確かに!私はサイドトラッキングを受けて、これまでパイプやスレッドを使用していなかったので調査したいと思っていました。 – Paul