Autor |
Beitrag |
Jojojoxx
      
Beiträge: 386
|
Verfasst: Sa 19.04.08 17:25
Hallo!
Wenn ich einen Aufruf über GetConsoleOutput mache, erhalte ich erst nach dem Programmende die Konsolenausgaben.
Lässt es sich irgendwie einrichten, dass ich die Ausgaben während der Laufzeit des aufgerufenen Programms auslesen kann?
Danke euch!
mfg
Jojo Moderiert von Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 26.04.2008 um 23:52
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 25.04.08 20:23
Schau Dir mal TDosCommand an, die kann das.
Grundlegend funktioniert das etwa so:
Man öffne zwei Pipes (eine Eingabe, eine Ausgabe), wenn gewünscht ne Dritte (für Fehlerausgaben).
Man initialisiere von Hand eine Startup-Info-Struktur it den nötigen Werten
Man dupliziere die oben genannten Handles für Iheritable-Zugriff durch den neuen Prozess.
Trage die geklonten Handles in die Startup-Info ein.
Man rufe CreateProcess oder CreateProcessEx auf, um den Prozess zu starten.
Man überprüfe mit WaitForSingleObject auf das Prozess-Handle, ob der fremde Prozess noch läuft (Timeout verwenden, typisch 50-100ms).
In regelmäßigen Abständen über die Pipes schauen, ob neue Daten da sind.
Soviel zum Grobablauf; Beispiel wie's geht, gibt's in TDosCommand (suche Forum).
MfG,
BenBE.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Fr 12.12.08 22:30
Titel: GetConsoleOutput
hallo leute!
ich habe heute genau das selbe problem...
ich habe eine konsolenanwendung die einen fortschrittsbalken hat,
da sie eine große datei ladet...
ich möchte diese ausgabe direkt in meiner anwendung anzeigen lassen...
mein programm bleibt aber für eine gute minute stehen und zeit dann
alles aufeinmal an, der fortschrittsbalken kommt dann in einzelne stings an...
also in etwas so:
/1%
//2%
///3%
bis zu
//////////////////////////////////////////////////100%
hat hier jemand ein kleines beispiel, wie ich das in echtzeit in meinem
programm anzeigen lassen kann?
wäre echt super, denn so wie ichs jetzt habe, weiß ich nie ob alles
okay ist, oder ob das programm stecken geblieben ist...
danke im vorraus...
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 22:38
|
|
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Fr 12.12.08 23:31
ich suche gerade dannach...
das hört sich genau nachdem an was ich suche:
this component let you execute a dos program (exe, com or batch file) and catch
the ouput in order to put it in a memo or in a listbox, ...
you can also send inputs.
the cool thing of this component is that you do not need to wait the end of
the program to get back the output. it comes line by line.
maxxdelphisite.free.fr/doscmd.htm
Zuletzt bearbeitet von oOXTCOo am Fr 12.12.08 23:34, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 23:34
 Google kennst du aber schon, oder?
TDOSCOMMAND
Gleich das erste Ergebnis ist es...
maxxdelphisite.free.fr/doscmd.htm
Was gibts da lange zu suchen? 
|
|
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Fr 12.12.08 23:35
hab ich schon gefunden...
ich wollte wissen ob es mit der von mir verwendeten komponente möglich ist,
aber scheinbar nicht...
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 23:37
Doch, theoretisch schon, du müsstest an den Stellen wo die Pipes ausgelesen werden die Ausgaben direkt verwenden statt sie nur in die StringLists zu schreiben.
Genau das macht TDosCommand.
|
|
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Fr 12.12.08 23:39
ich habe delphi schon so lange nicht mehr verwendet,
ich bekomme die komponente einfach nicht installiert...
es kann kein build erstellt werden, die lizens ist abgelaufen...
|
|
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Fr 12.12.08 23:44
okay, sieht aus als funtkioniert es nun, danke!
|
|
|