Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Vor dem Beenden eine Aktion ausführen? (https://www.delphipraxis.net/34676-vor-dem-beenden-eine-aktion-ausfuehren.html)

mlspider 26. Nov 2004 13:37


Vor dem Beenden eine Aktion ausführen?
 
Ich habe eine Applikation, die minimiert als Tray Icon gestartet wird und nur darauf wartet, bis es durch das Beenden von Windows geschlossen wird.

Dabei soll das Programm beim schießen, einen Registerschlüssel modifizieren. Ich habe es wie folgt versucht:

Delphi-Quellcode:
uses registry;

{$R *.dfm}

var regist : TRegistry;

begin
if Application.Terminated then begin
  regist := TRegistry.Create;
  regist.RootKey := HKEY_CURRENT_USER;
  regist.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true);
  regist.WriteInteger('DisableTaskMgr', 1);
  sleep(3000);
  end;

end.
Leider ohne Erfolg. Wie könnte man dies anstellen?

Steve 26. Nov 2004 13:39

Re: Vor dem Beenden eine Aktion ausführen?
 
Hi,

schreibs doch ins OnClose deiner MainForm...?!?

Gruß
Stephan :dance: :xmas:

Matze 26. Nov 2004 13:39

Re: Vor dem Beenden eine Aktion ausführen?
 
Ich weiß nicht, ob WIndows die prozesse ordnungsgemäß beendet, oder einfach "killt".
Falls sie Ordnungsgemäß beendet werden, kann du einfach z.B. ins OnCloseQuerry diese Abfrage ausführen.

Was genau klappt bei dir nicht und wo rufst du den Code auf?
Und für was das
Delphi-Quellcode:
Sleep(3000);
Das friert nur die ganze Anwendung ein.

mlspider 26. Nov 2004 13:40

Re: Vor dem Beenden eine Aktion ausführen?
 
Ich muß dazu sagen, daß das Fenster zu keiner Zeit geöffnet ist. Ich denke mal, daß das Ereignis OnClose sich nur auf das Schließen eines aktiven Fenster bezieht.

mlspider 26. Nov 2004 13:42

Re: Vor dem Beenden eine Aktion ausführen?
 
Sleep habe ich nur deswegen gesetzt, um ganz sicher zu gehen, daß der Wert auch wirklich geändert wurde.

Nightshade 26. Nov 2004 14:07

Re: Vor dem Beenden eine Aktion ausführen?
 
Versuchs mal im finalization Abschnitt :


Delphi-Quellcode:
var
  Form1: TForm1;
  regist: TRegistry;

implementation

{$R *.dfm}


initialization
  //  Wird vorher ausgeführt
finalization
  //  Wird nachher ausgeführt
  regist := TRegistry.Create;
  regist.RootKey := HKEY_CURRENT_USER;
  regist.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true);
  regist.WriteInteger('DisableTaskMgr', 1);
  regist.free;


end.

Luckie 26. Nov 2004 14:08

Re: Vor dem Beenden eine Aktion ausführen?
 
Wenn Windows runterfährt, oder es soll, dann schickt es erst an alle toplevel Fenster die Nachricht MSDN-Library durchsuchenWM_QUERYENDSESSION. Dort kann man dann noch was machen.

mlspider 26. Nov 2004 14:14

Re: Vor dem Beenden eine Aktion ausführen?
 
Dieser Link existiert leider nicht mehr.

Luckie 26. Nov 2004 14:16

Re: Vor dem Beenden eine Aktion ausführen?
 
Hmpf. Hättest du mal genauer hingekuckt, dann wäre dir aufgefallen, dass ich mich vertippt habe. Jetzt sollte er gehen. Eine Suche nach dem Stichwort in der DP sollte auch erfolgversprechend sein.

mlspider 26. Nov 2004 14:22

Re: Vor dem Beenden eine Aktion ausführen?
 
Ich habe jetzt alles in dem finalization-Abschitt eingefügt. Der Wert wird trotzdem nicht geändert. Leider!

Luckie 26. Nov 2004 15:10

Re: Vor dem Beenden eine Aktion ausführen?
 
Mit meiner Methode geht es bestimmt, so lange deine Anwendung über ein Fenster verfügt.

MisterNiceGuy 26. Nov 2004 15:17

Re: Vor dem Beenden eine Aktion ausführen?
 
Guckst du hier: Gleiches Thema
:mrgreen:

mlspider 26. Nov 2004 15:26

Re: Vor dem Beenden eine Aktion ausführen?
 
Dann verate mir doch mal Deine Methode. Die Anwendung verfügt über ein Fenster, wird aber nie gezeigt, da es lediglich in der TNA sein dasein fristet.

Luckie 26. Nov 2004 15:29

Re: Vor dem Beenden eine Aktion ausführen?
 
Zitat:

Zitat von mlspider
Dann verate mir doch mal Deine Methode.

Lies meine Beiträge. Ob dein Fenster sichtbar ist oder nicht, dürfte keine Rolle spielen.

bjacke 26. Nov 2004 15:43

Re: Vor dem Beenden eine Aktion ausführen?
 
Hi, ich habe den Vorschlag aus den EDH hier gepostet, entspricht dem Vorschlag von Luckie.
:spin:

mlspider 26. Nov 2004 15:54

Re: Vor dem Beenden eine Aktion ausführen?
 
Danke!!! Werde ich probieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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