... dann ein gut gemeinter Rat:
Vergiss doch für ein paar Minuten dein eigentliches Programm und beschäftige dich ausschließlich mit der Umsetzung des
dsdt-Beispiels: Kopiere die Funktion "GetConsoleOutput" in ein neues Projekt, packe auf das Form einen Button und ein Memo. In das OnClick des Buttons fügst du folgenden Code ein. Der ist gegenüber dem
dsdt-Beispiel etwas erweitert, damit z.B. auch Umlaute im Memo korrekt dargestellt werden:
Delphi-Quellcode:
procedure T~~.Button1Click(Sender:TObject);
var Output,
Errors : TStringList;
CmdInterpreter,
Command : String;
function IsWindowsNT:Boolean;
begin
Result:=(Win32Platform=Ver_Platform_Win32_NT);
end;
function ConsoleStr2AnsiStr(ConsoleStr:String):String;
var Buffer : pChar;
begin
Result:=ConsoleStr;
GetMem(Buffer,length(ConsoleStr)+1);
try
OEMToCharBuff(pChar(ConsoleStr),Buffer,length(ConsoleStr));
SetString (Result,Buffer,length(ConsoleStr));
finally
FreeMem(Buffer,length(ConsoleStr)+1);
end;
end;
begin
Memo1.Clear;
Command:='dir c:\'; // <<< hier DEINEN BatchAufruf placieren!!!!!!
if IsWindowsNT then CmdInterpreter:='cmd'
else CmdInterpreter:='command';
Output:=TStringList.Create;
try
Errors:=TStringList.Create;
if GetConsoleOutput(CmdInterpreter+' /c '+Command,Output,Errors) then begin
Memo1.Lines.AddStrings(Output);
Memo1.Text:=ConsoleStr2AnsiStr(Memo1.Text);
end
finally
Output.Free;
Errors.Free;
end;
end;
Und wenn hier alles funktioniert, übernimmst du das Ganze in dein eigentliches Projekt!
Viel Erfolg!