| Autor |
Beitrag |
Syngel Kid
      
Beiträge: 61
Win XP
Delphi 2005
|
Verfasst: Fr 09.07.04 18:32
Hey,
Wenn der Benutzer im Task Manager unter Prozesse geht und dort mein Programm beendet,
wie kann ich vor dem Beenden noch eine Prozedur aufrufen?
Mit "OnClose" geht es nicht, mit OnCloseQuery kann ich es höchstens beim "Task Beenden" auslösen...
Gibt es den keine Möglichkeit?
MfG Syngel Kid
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Fr 09.07.04 19:17
imho nein, da der gesamte Prozess gekillt wird und die Application davon nichts mitbekommt.
grez
msch
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 19:39
Kann man die Prozess-Killer-Fkten hooken? Dürfte (im Sinne von erlaubt sein) zwar imho nicht möglich sein, aber wer weiß...?
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Fr 09.07.04 19:52
| obbschtkuche hat folgendes geschrieben: | | Kann man die Prozess-Killer-Fkten hooken? Dürfte (im Sinne von erlaubt sein) zwar imho nicht möglich sein, aber wer weiß...? |
Habs grad ausprobiert...  Einfach die Funktion TerminateProcess Hooken und schon funktionierts...!
raziel
_________________ JSXGraph
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 20:00
Au, das tut weh.
Und was passiert nu wenn ich das ganze einfach mal... nicht weiterleite wenn Process = GetCurrentProcess? 
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Fr 09.07.04 20:08
| obbschtkuche hat folgendes geschrieben: | Au, das tut weh.
Und was passiert nu wenn ich das ganze einfach mal... nicht weiterleite wenn Process = GetCurrentProcess?  |
 Wie meinen? Wenn ich die Server-App kill, wird der Code ausgeführt, mit dem ich TermianteProcess ersetzt habe. Nach dem Killen wird offensichtlich die Hook-Dll ebenfalls entladen und danach passiert nichts weiter. Wenn man einen bestimmten Prozess rausfiltert wird halt nur dann der Code abgehandelt, wenn das entsprechende Fenster gekillt wird. Ansonsten wird die alte TerminateProcess aufgerufen. Oder hab ich was übersehen? *verunsichert nach Denkfehlern such*
raziel
_________________ JSXGraph
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 20:12
| raziel hat folgendes geschrieben: | | *verunsichert nach Denkfehlern such* |
*das selbe tu*
Annahme: Ich hooke TerminateProcess und ersetze es durch eine leere Dummy-Proc => Das "echte" TerminateProcess kann nicht mehr erreicht werden (zumindest nicht wenn die richtige Methode genommen wird)
Jetzt versucht der User einen Prozess zu killen. Passiert etwas?
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Fr 09.07.04 20:16
Ach so! Also ich hab ne MessageBox mit dem ExitCode und "Letzer Aufschrei" aufblobben lassen. Danach wird die original TerminateProcess aufgerufen (-> Process gets killed). Das führt aber insofern zu einem Fehler, dass der gekillte Process mit ner AV abschmiert, wenn der TaskMan geschlossen wird, bevor die MessageBox geschlossen wurde, aber da muss man halt dann auf die MessageBox verzichten und "unsichtbaren" Code ausführen.
Ausserdem ersetze ich nicht die Funktion, sondern biege ein paar Zeiger um, die ich beim Unhooken wieder gradebieg...
raziel
_________________ JSXGraph
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 20:20
Also irre ich mich jetzt oder wird nicht eigentlich in der Import/Export-Tabelle rumgepfuscht? (Das wäre dann ja ersetzen)
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Fr 09.07.04 20:23
In der Import, aber das wird jetzt OT  Und wenn ich ein "Backup" der ursprünglichen Zeiger mach, kann die Hook-Dll sie weiterhin aufrufen und sie hinterher restaurieren.
Aber wie gesagt, das wird jetzt zu OT...
_________________ JSXGraph
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 20:27
Eins noch:
Stimmt, aber du biegst keinen Zeiger, sondern die entsprechende Tabelle um 
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Fr 09.07.04 20:29
| obbschtkuche hat folgendes geschrieben: | Stimmt, aber du biegst keinen Zeiger, sondern die entsprechende Tabelle um  |
Nein, ich biege für jede importierte Funktion, die ich hooken will, in der Importtabelle jeden Zeiger einzeln um!
raziel
_________________ JSXGraph
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 09.07.04 20:31
Also ersetzt du sie doch? 
|
|