AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Killen eines hängenden Prozessesn [Prozess reagiert nicht]
Thema durchsuchen
Ansicht
Themen-Optionen

Killen eines hängenden Prozessesn [Prozess reagiert nicht]

Offene Frage von "Basti1991"
Ein Thema von Basti1991 · begonnen am 25. Sep 2009 · letzter Beitrag vom 29. Sep 2009
 
Basti1991

Registriert seit: 15. Jul 2007
7 Beiträge
 
#1

Killen eines hängenden Prozessesn [Prozess reagiert nicht]

  Alt 25. Sep 2009, 16:38
Hallo Zusammen,

ich schreibe zur Zeit ein Programm, dass PDFs zu SWF Konvertieren soll. Es nutzt dazu das Programm FlashPrinter von Adobe. Im Prinzip läuft es so ab:

Dateiliste erstellen -> Datei aus liste nehmen -> FlashPrinter starten und warten (maximal 20 Minuten) -> Fertig? -> Nächste Datei
|
|
---> Prozess hängt? ( > 20 Mins) -> Prozess killen und nächste Datei


Klappt ja alles Kundebar, nur dass Killen klappt nicht...ich nutze zur Zeit das hier zum killen:

Delphi-Quellcode:
KillProcess(PID: DWord): Bool;
var
  hProcess: THandle;
begin
  hProcess := OpenProcess(PROCESS_TERMINATE, False, PID);
  Result := TerminateProcess(hProcess, 0);
end;
Delphi-Quellcode:
GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID;
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;
Delphi-Quellcode:
ProcessExists(ExeName: String): Boolean;
var
  I: Integer;
  hSnap: THandle;
  ProcEntry: TProcessEntry32;
  s: String;
  ProcList: TStringList;
begin
  ProcList := TStringList.Create;

  ProcList.BeginUpdate;
  ProcList.Clear;
  hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if (hSnap <> INVALID_HANDLE_VALUE) then
  begin
    ProcEntry.dwSize := SizeOf(ProcessEntry32);
    if (Process32First(hSnap, ProcEntry)) then
    begin
      s := ExtractFileName(ProcEntry.szExeFile);
      proclist.Add(s);
      while Process32Next(hSnap, ProcEntry) do
      begin
        s := ExtractFileName(ProcEntry.szExeFile);
        proclist.Add(s);
      end;
    end;
  end;
  CloseHandle(hSnap);
  ProcList.EndUpdate;

  if (ProcList.IndexOf(ExtractFileName(ExeName)) > 0) then
    result := true
  else
    result := false;
  ProcList.Destroy;
end;

Delphi-Quellcode:
  App = 'FlashPrinter2.exe';
  while ProcessExists(App) do
  begin
    sleep(5000);
    KillProcess(GetProcessID(App));
  end;
also wird solange der Kill Befehl alle 5 Sekunden aufgerufen, bis der Prozess nachgibt..nur tut er das nie..mein Programm hängt sich quasi mit auf, wenn der Flashprinter streikt.

Gibt es eine möglichkeit den hängenden FlashPrinter abzuschießen?
Wäre echt super, müsst halt gut klappen, weil ich hab da um die 45 000 PDFs zu konvertieren (ich Programmier das ja eigentlich nicht für mich selber, sondern für die Firma wo ich arbeite, da fallen so viele PDFs an...rechnerisch würde das Programm ca 8 Tage dauerlaufen..also suche ich ne Zuverlässige Lösung)...Und jezz bitte keine Scherze wie :

Zitat:
Zitat:
.also suche ich ne Zuverlässige Lösung
Dann nimm kein Windows
Auch wenn ich für Windows nicht meine Hand ins feuer lege: 1. So sind nunmal meine Vorgaben - man muss lernen damit zu arbeiten, was man bekommt, 2. Wenn mans richtig macht, kann man auch mit Windows was anfangen.

Wie auch immer - vielen Dank für eure Hilfe =)

Viele Grüße,
Sebastian
  Mit Zitat antworten Zitat
 


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 10:39 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