AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RunProcess Problem, wenn aufgerufenes Prg crasht
Thema durchsuchen
Ansicht
Themen-Optionen

RunProcess Problem, wenn aufgerufenes Prg crasht

Ein Thema von Shrek_III · begonnen am 7. Mär 2005 · letzter Beitrag vom 8. Mär 2005
Antwort Antwort
Shrek_III

Registriert seit: 15. Dez 2004
Ort: Handewitt
25 Beiträge
 
Delphi XE5 Enterprise
 
#1

RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 00:03
Hab da mal eine sache, die mich selbst sehr nachdenklich macht, aber vielleicht kann mir ja hier geholfen werden...

...also ich benutze die (wohl durchaus bekannte) Funktion unten um ein Programm auszuführen. Jedes mal, wenn sich dieses Programm aufhängt (crash und anschließender Popup-Fehler Meldung), bleibt mein Programm - also das aufrufende stehen - und zwar genau so lange, bis ich das Fehler-Fenster geschlossen/bestätigt habe.
Mein Versuch mit einem Timer das aufpoppende Fenster zu suchen und es dann zu killen bleibt ohne Erfolg, da selbst der Timer beim Crash nicht mehr funktioniert und erst wieder weiterläuft, wenn ich das Fehler-Fenster geschlossen habe.

Irgendjemand eine Idee wie ich diesem Misstand beikommen kann? - Von mir aus kann es ja auch eine komplett andere Startroutine sein, ich muss lediglich die ProzessID des gestarteten Programms bekommen, da ich NICHT nach dem Fenstertitel suchen kann, da der wiederum durch den Benutzer eingestellt werden kann und es deshalb mehrere Fenster mit gleichem Titel geben könnte.


Schon mal im Voraus Schönen Dank

Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;
So long fellas

Shrek_III
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 00:06
Moin Shrek,

dann ruf' doch einfach die Funktion mit wait = false auf.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Shrek_III

Registriert seit: 15. Dez 2004
Ort: Handewitt
25 Beiträge
 
Delphi XE5 Enterprise
 
#3

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 00:11
Tschuldigung, vergaß ich zu erwähnen - das tue ich bereits!
So long fellas

Shrek_III
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 00:14
Moin Shrek,

dann solltest Du noch einmal Deinen Code-Ausschnitt editieren.
Da benutzt Du nämlich true
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Shrek_III

Registriert seit: 15. Dez 2004
Ort: Handewitt
25 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 07:49
OMG - Es tut mir wirklich unendlich leid, daß ich einen kompletten Abschnitt aus diesem Forum "kopiert" habe, ich rufe aber dennoch nicht mit true auf, wie mein echter Code ausschnitt beweist:

Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    false, // habe hier bereits true und false ausprobiert ohne jeglichen Erfolg
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    PAnsiChar (ExtractFilePath (FileName)),
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      GameMaker.Label61.caption := 'Ohne Wait';
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;
...

  RunProcess(D2ExeEdit.Text + ' ' + tmpStrg, WindowStyle, FALSE, @ProcID);

P.S.: Leider hat diese ganze Diskussion bisher noch nichts gebracht, also noch Vorschläge?
So long fellas

Shrek_III
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 7. Mär 2005, 23:55
Moin Shrek,

hast Du mal einen Tip, wie ich so einen Crash gezielt simulieren kann?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Shrek_III

Registriert seit: 15. Dez 2004
Ort: Handewitt
25 Beiträge
 
Delphi XE5 Enterprise
 
#7

Re: RunProcess Problem, wenn aufgerufenes Prg crasht

  Alt 8. Mär 2005, 08:06
Nunja, ich probiere es mit Diablo aus, aber das ganze hat sich schon erledigt, da es anscheinend nicht am Aufruf der Applikation hängt, sondern vielmehr an sendCopyData, das wohl noch auf eine Antwort wartet, während sich das Diablo bereits aufgehängt hat - ist also nicht, wie zunächst von mir vermutet mit RunProcess in Zusammenhang zu bringen.
So long fellas

Shrek_III
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:16 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