Registriert seit: 1. Dez 2003
360 Beiträge
Turbo Delphi für Win32
|
Re: Schließen eines fremden Programms verhindern
17. Feb 2005, 18:06
Ein nicht ganz korrekt berechnetes X-Button-Rect könnte übrigens auch darauf zurück gehen, dass das Programm (bei dem du das Schließen so verhindern willst) mit BorderStyle=bsNone erzeugt wurde. Denn dann wären eventuelle BorderIcons (also auch die X-Button) natürlich Individual-Anfertigungen und diese Korrektur-Werte zur Errechnung des X-Button-Rect müssten demzufolge auch immer entsprechend extra angepasst werden. Die im obigen Beispiel diesbezüglich benutzen Werte passen jedenfalls für BorderStyle=bsNormal-Programme und solche von der Sorte Notepads etc..
Und da wir gerade bei Notepad sind... Wenn ich das z.B. übers MainMenue (Datei -> Beenden) beenden möchte, dann ist jedenfalls auch ein Abfangen einer WM_Close-Message nötig. Welche Message da aber letztlich immer abgefangen werden muss, hängt dann aber wohl auch vom Programm selbst ab. Je nach dem, wie es den Programmabbruch eben für sich selbst verursacht. So muss z.B. bei einem Delphi-Prog, das über die close-Methode beendet wird, kein WM_Close abgefangen werden, sondern wider Erwarten ein WM_Quit.
Warum bei dir keine WM_SysCommand-Message (mit wParam = SC_CLOSE) in der HookProc vorbeikommt kann ich mir allerdings nicht so recht erklären. Die müsste beim Prog-Abbruch übers WindowMenue (also dasjenige, welches beim Rechtsclick auf die Programm-Button in der Taskbar aufpopt !) da eigentlich schon auftauchen.
MfG (& Thx ggf.)
|