我想捕獲cmd.exe輸出並將其顯示在我製作的不同GUI中。我想製作一個擴展功能的命令解釋器。 dir命令的工作完美無瑕,當我嘗試執行另一個進程(如ipconfig)時,問題仍然存在。捕獲所有命令輸出
我看不到ipconfig輸出。有沒有一個workarround呢?!
我使用拉撒路(FreePascal的)T加工組件
proc := TProcess.Create(nil);
proc.Options:= [poUsePipes, poNoConsole];
proc.ShowWindow:= swoHIDE;
proc.Executable:= 'cmd';
讀輸出線:
if (Length(cmd) > 0) then
begin
cmd := cmd + #13#10;
proc.Input.Write(cmd[1], Length(cmd)); // here I write command from user
strikes := 0;
end
else
if proc.Output.NumBytesAvailable > 0 then
begin
while proc.Output.NumBytesAvailable > 0 do
begin
FillChar(buf, sizeof(buf), #0);
proc.Output.Read(buf, sizeof(buf) - 1);
data := data + buf;
end;
// data gets echoed to user
我們看不到您的代碼。 – 2015-03-13 12:53:04
@DavidHeffernan我使用lazarus套件中的TProcess,這是創建標誌。不要認爲代碼錯誤 – opc0de 2015-03-13 12:58:56
'proc.ShowWindow'沒有任何用處。這是一個控制檯應用程序,「poNoConsole」是最重要的。如果你展示了一個完整的程序,將有所幫助。 – 2015-03-13 13:03:20