Thema: cmd fenster

Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#33

Re: cmd fenster

  Alt 18. Mär 2008, 14:26
... 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!
Ralph
  Mit Zitat antworten Zitat