AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DOS text speichern ?

Ein Thema von Blackheart · begonnen am 12. Okt 2006 · letzter Beitrag vom 12. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#1

DOS text speichern ?

  Alt 12. Okt 2006, 13:50
Hallo Leute !
Hat jemand von Euch eine Ahnung wie man an den Text der Dos Box
herrankommt die man mit Shellexecute aufgerufen hatt um Ihn als Textdatei zu speichern oder im eigenen Programm anzuzeigen.
Also Ich öffne eine Datei mit einem Dos Prog diese wird mit dem Program bearbeitet und das Program gibt dann eventuelle Fehler als Text aus, diesn hätte Ich gern als Textdatei.
Ich hoffe Ich hab mich einigermaßen verständlich ausgedrückt.
Blackheart
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: DOS text speichern ?

  Alt 12. Okt 2006, 14:11
Hallo,

vielleicht hilft Dir ja das hier weiter- > http://groups.google.de/group/borlan...825689c189adaf

Habe es selber nicht getestet.

Ein anderer Weg wäre noch, die Ausgabe in eine Datei zu schreiben
und diese dann von Deiner Aplikation wieder einzulesen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DOS text speichern ?

  Alt 12. Okt 2006, 14:58
@ Klaus01 danke für den Link aber mit der function klappt es leider nicht.
Naja vieleicht find Ich ja noch was.
Blackheart
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: DOS text speichern ?

  Alt 12. Okt 2006, 14:59
Delphi-Quellcode:
function CreateConsoleScreenBuffer; external kernel32 name 'CreateConsoleScreenBuffer';
function FillConsoleOutputAttribute; external kernel32 name 'FillConsoleOutputAttribute';
function FillConsoleOutputCharacter; external kernel32 name 'FillConsoleOutputCharacterA';
function FillConsoleOutputCharacterA; external kernel32 name 'FillConsoleOutputCharacterA';
function FillConsoleOutputCharacterW; external kernel32 name 'FillConsoleOutputCharacterW';
function GenerateConsoleCtrlEvent; external kernel32 name 'GenerateConsoleCtrlEvent';
function GetConsoleCP; external kernel32 name 'GetConsoleCP';
function GetConsoleCursorInfo; external kernel32 name 'GetConsoleCursorInfo';
function GetConsoleMode; external kernel32 name 'GetConsoleMode';
function GetConsoleOutputCP; external kernel32 name 'GetConsoleOutputCP';
function GetConsoleScreenBufferInfo; external kernel32 name 'GetConsoleScreenBufferInfo';
function GetConsoleTitle; external kernel32 name 'GetConsoleTitleA';
function GetConsoleTitleA; external kernel32 name 'GetConsoleTitleA';
function GetConsoleTitleW; external kernel32 name 'GetConsoleTitleW';
function PeekConsoleInput; external kernel32 name 'PeekConsoleInputA';
function PeekConsoleInputA; external kernel32 name 'PeekConsoleInputA';
function PeekConsoleInputW; external kernel32 name 'PeekConsoleInputW';
function ReadConsole; external kernel32 name 'ReadConsoleA';
function ReadConsoleA; external kernel32 name 'ReadConsoleA';
function ReadConsoleW; external kernel32 name 'ReadConsoleW';
function ReadConsoleInput; external kernel32 name 'ReadConsoleInputA';
function ReadConsoleInputA; external kernel32 name 'ReadConsoleInputA';
function ReadConsoleInputW; external kernel32 name 'ReadConsoleInputW';
function ReadConsoleOutput; external kernel32 name 'ReadConsoleOutputA';
function ReadConsoleOutputA; external kernel32 name 'ReadConsoleOutputA';
function ReadConsoleOutputW; external kernel32 name 'ReadConsoleOutputW';
function ReadConsoleOutputAttribute; external kernel32 name 'ReadConsoleOutputAttribute';
function ReadConsoleOutputCharacter; external kernel32 name 'ReadConsoleOutputCharacterA';
function ReadConsoleOutputCharacterA; external kernel32 name 'ReadConsoleOutputCharacterA';
function ReadConsoleOutputCharacterW; external kernel32 name 'ReadConsoleOutputCharacterW';
function ScrollConsoleScreenBuffer; external kernel32 name 'ScrollConsoleScreenBufferA';
function ScrollConsoleScreenBufferA; external kernel32 name 'ScrollConsoleScreenBufferA';
function ScrollConsoleScreenBufferW; external kernel32 name 'ScrollConsoleScreenBufferW';
function SetConsoleActiveScreenBuffer; external kernel32 name 'SetConsoleActiveScreenBuffer';
function SetConsoleCP; external kernel32 name 'SetConsoleCP';
function SetConsoleCtrlHandler; external kernel32 name 'SetConsoleCtrlHandler';
function SetConsoleCursorInfo; external kernel32 name 'SetConsoleCursorInfo';
function SetConsoleCursorPosition; external kernel32 name 'SetConsoleCursorPosition';
function SetConsoleMode; external kernel32 name 'SetConsoleMode';
function SetConsoleOutputCP; external kernel32 name 'SetConsoleOutputCP';
function SetConsoleScreenBufferSize; external kernel32 name 'SetConsoleScreenBufferSize';
function SetConsoleTextAttribute; external kernel32 name 'SetConsoleTextAttribute';
function SetConsoleTitle; external kernel32 name 'SetConsoleTitleA';
function SetConsoleTitleA; external kernel32 name 'SetConsoleTitleA';
function SetConsoleTitleW; external kernel32 name 'SetConsoleTitleW';
function SetConsoleWindowInfo; external kernel32 name 'SetConsoleWindowInfo';
function WriteConsole; external kernel32 name 'WriteConsoleA';
function WriteConsoleA; external kernel32 name 'WriteConsoleA';
function WriteConsoleW; external kernel32 name 'WriteConsoleW';
function WriteConsoleInput; external kernel32 name 'WriteConsoleInputA';
function WriteConsoleInputA; external kernel32 name 'WriteConsoleInputA';
function WriteConsoleInputW; external kernel32 name 'WriteConsoleInputW';
function WriteConsoleOutput; external kernel32 name 'WriteConsoleOutputA';
function WriteConsoleOutputA; external kernel32 name 'WriteConsoleOutputA';
function WriteConsoleOutputW; external kernel32 name 'WriteConsoleOutputW';
function WriteConsoleOutputAttribute; external kernel32 name 'WriteConsoleOutputAttribute';
function WriteConsoleOutputCharacter; external kernel32 name 'WriteConsoleOutputCharacterA';
function WriteConsoleOutputCharacterA; external kernel32 name 'WriteConsoleOutputCharacterA';
function WriteConsoleOutputCharacterW; external kernel32 name 'WriteConsoleOutputCharacterW';

function QueryDosDevice; external kernel32 name 'QueryDosDeviceA';
function QueryDosDeviceA; external kernel32 name 'QueryDosDeviceA';
function QueryDosDeviceW; external kernel32 name 'QueryDosDeviceW';
function DefineDosDevice; external kernel32 name 'DefineDosDeviceA';
function DefineDosDeviceA; external kernel32 name 'DefineDosDeviceA';
function DefineDosDeviceW; external kernel32 name 'DefineDosDeviceW';
Irgendwas davon müsste dabeisein, was du brauchst.
Ist aus der Windows.pas.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: DOS text speichern ?

  Alt 12. Okt 2006, 15:04
versuch mal das: http://www.dsdt.info/tipps/?id=637

oder schon erwähnt aber wohl die einfachste Mehode:
Delphi-Quellcode:
  ShellExecute(Application.Handle, 'open', 'cmd', '/C Prog /param > C:\Temp\Test', SW_HIDE);
  Memo1.Lines.LoadFromFile('C:\Temp\Test');
mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: DOS text speichern ?

  Alt 12. Okt 2006, 15:06
Zitat von Blackheart:
@ Klaus01 danke für den Link aber mit der function klappt es leider nicht.
Naja vieleicht find Ich ja noch was.
Blackheart
bei mir tut es aber:


Delphi-Quellcode:
function ExecAndGetConsoleOutput (const CommandLine,Parameter : string;
  var Output : TStringList) : boolean;
var
  Sa : TSecurityAttributes;
  StartInfo : TStartupInfo;
  ProcInfo : TProcessInformation;
  StdOutFile,
  AppProc,
  AppThread : LongWord;
  RootDir,
  WorkDir,
  StdOutFn : string;
begin
  Result := FileExists(ExtractFilePath (CommandLine) +
    ExtractFileName (CommandLine));
  if Result then
  begin
    StdOutFile := INVALID_HANDLE_VALUE;
    AppProc := INVALID_HANDLE_VALUE;
    AppThread := INVALID_HANDLE_VALUE;


    try
      RootDir := ExtractFilePath (ParamStr(0));
      WorkDir := ExtractFilePath (CommandLine);


      if not (FileSearch (ExtractFileName (CommandLine), WorkDir) <> '') then
        WorkDir := RootDir;


      FillChar (Sa, SizeOf(Sa), #0);
      Sa.nLength := SizeOf (Sa);
      Sa.lpSecurityDescriptor := nil;
      Sa.bInheritHandle := TRUE;


      StdOutFn := RootDir + '_tmpoutp.tmp';
      StdOutFile := CreateFile (PChar(StdOutFn), GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, @Sa, CREATE_ALWAYS,
        FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_WRITE_THROUGH, 0);


      if StdOutFile <> INVALID_HANDLE_VALUE then
      begin
        FillChar (StartInfo, SizeOf(StartInfo), #0);
        with StartInfo do
        begin
          cb := SizeOf (StartInfo);
          dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
          wShowWindow := SW_HIDE;
          hStdInput := GetStdHandle (STD_INPUT_HANDLE);
          hStdError := StdOutFile;
          hStdOutput := stdOutFile;
        end;


        if CreateProcess (nil, PChar(CommandLine+' '+Parameter), nil, nil, TRUE, 0, nil,
          PChar(WorkDir), StartInfo, ProcInfo) then
        begin
          WaitForSingleObject (ProcInfo.hProcess, INFINITE);
          AppProc := ProcInfo.hProcess;
          AppThread := ProcInfo.hThread;


          CloseHandle (StdOutFile);
          StdOutFile := INVALID_HANDLE_VALUE;


          Output.Clear;
          Output.LoadFromFile (StdOutFn);
        end;
      end;
    finally
      if StdOutFile <> INVALID_HANDLE_VALUE then
        CloseHandle (StdOutFile);
      if AppProc <> INVALID_HANDLE_VALUE then
        CloseHandle (AppProc);
      if AppThread <> INVALID_HANDLE_VALUE then
        CloseHandle (AppThread);


      if FileExists (StdOutFn) then
        SysUtils.DeleteFile (StdOutFn);
    end;
  end;
end;




procedure TForm1.Button1Click(Sender: TObject);
var
  sl:TStringList;
begin
  sl:=TStringList.create;
  ExecAndGetConsoleOutput('c:\winnt\system32\cmd.exe','/C dir c:',sl);
  Memo1.Lines:=sl;
  sl.Free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: DOS text speichern ?

  Alt 12. Okt 2006, 15:12
Hab grad nochwas gefunden:
MSDN-Library
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: DOS text speichern ?

  Alt 12. Okt 2006, 16:07
Hallo Leute
Danke für die vielen Antworten jetzt haut es soweit hin.
In der Datei steht zwar nicht genau das was im Prog steht aber naja.
Hab jetzt die function eingesetzt, hatte beim probieren den falschen Pfad angegeben deswegen hatte Ich immer Fehler beim Lesen.

Das ging leider nicht

ShellExecute(Application.Handle, 'open', 'c:\Programme\Borland\Delphi7\Bin\Brcc32.exe', '/C Prog /param > C:\Temp\Test', SW_HIDE);
Memo1.Lines.LoadFromFile('C:\Temp\Test');

Inkomplatibel AnsiChar und Integer

Dank an Alle Blackheart.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#9

Re: DOS text speichern ?

  Alt 12. Okt 2006, 16:43
Zitat von Blackheart:
ShellExecute(Application.Handle, 'open', 'c:\Programme\Borland\Delphi7\Bin\Brcc32.exe', '/C Prog /param > C:\Temp\Test', SW_HIDE);
Memo1.Lines.LoadFromFile('C:\Temp\Test');

Inkomplatibel AnsiChar und Integer
Jo. Es fehlt n Parameter. Ich hab auch nicht behauptet, dass das Copy'n'Paste fähig is...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: DOS text speichern ?

  Alt 12. Okt 2006, 17:10
Hab Ich auch nicht gesagt, aber er schreibt auch nicht die Datei
Blackheart
ShellExecute(Application.Handle, 'open', 'C:\Programme\Borland\Delphi7\Bin\Brcc32.exe', '/C Prog /param > C:\Test.txt',nil, SW_HIDE);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz