![]() |
DOS text speichern ?
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 |
Re: DOS text speichern ?
Hallo,
vielleicht hilft Dir ja das hier weiter- > ![]() 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 |
Re: DOS text speichern ?
@ Klaus01 danke für den Link aber mit der function klappt es leider nicht.
Naja vieleicht find Ich ja noch was. Blackheart |
Re: DOS text speichern ?
Delphi-Quellcode:
Irgendwas davon müsste dabeisein, was du brauchst.
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'; Ist aus der Windows.pas. :mrgreen: |
Re: DOS text speichern ?
versuch mal das:
![]() oder schon erwähnt aber wohl die einfachste Mehode:
Delphi-Quellcode:
mfg
ShellExecute(Application.Handle, 'open', 'cmd', '/C Prog /param > C:\Temp\Test', SW_HIDE);
Memo1.Lines.LoadFromFile('C:\Temp\Test'); Christian |
Re: DOS text speichern ?
Zitat:
Delphi-Quellcode:
Grüße
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; Klaus |
Re: DOS text speichern ?
|
Re: DOS text speichern ?
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. |
Re: DOS text speichern ?
Zitat:
mfg Christian |
Re: DOS text speichern ?
Hab Ich auch nicht gesagt, aber er schreibt auch nicht die Datei
Blackheart
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', 'C:\Programme\Borland\Delphi7\Bin\Brcc32.exe', '/C Prog /param > C:\Test.txt',nil, SW_HIDE);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz