[gelöst]Auf KDE Abmeldung bzw. Shutdown reagieren

Antworten
shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

[gelöst]Auf KDE Abmeldung bzw. Shutdown reagieren

Beitrag von shokwave »

Guten Abend,

ich hab jetzt einen Linuxrechner (SUSE 10.3 mit KDE) zur Verfügung und bin dabei meinen RWC auf Linux zu portieren. Fast alle Unterschiede zu Windows (Autostart, Hintergrund wechseln..) konnte ich umsetzten, nur an einer Stelle haperts. Beim runterfahren/abmelden soll das Programm normal geschlossen werden. Da ich das im onFormCloseQuery nur zulasse, wenn eine bestimmte Variable True ist, muss ich auf das "runterfahren" reagieren, um dort die Variable zu setzen.

Unter Win32 konnte ich das mit:

Code: Alles auswählen

procedure TForm1.WMQueryEndSession(var Msg : TWMQueryEndSession) ;
begin
  HardClose:=True;
  Msg.Result:=1 ;
  Close;
end;
Gibt es eine solche Message auch unter Linux?

mfg Ingo
Zuletzt geändert von shokwave am Fr 18. Jan 2008, 18:48, insgesamt 1-mal geändert.
mfg Ingo

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

OnFormCloseQuery wird doch beim runterfahren ausgeführt ?!
Verseth nicht ganz wozu du jetzt das 2. Ereignis brauchst.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Afaik sendet herunterfahren ein SIGTERM.
Das kannste so abfangen:

Code: Alles auswählen

procedure SigTermHandler(Signal: Integer); cdecl;
begin
  Form1.close;
end;
 
initialization
Libc.signal(SIGTERM, @SigTermHandler);
Kein Ahnung ob das dein Problem löst. Kann auch sein das X da vorher eingreift: Testen.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Beitrag von shokwave »

@Theo, war fast richtig. Der KDE schickt anscheind ein SigHup. Ansonsten passts. Danke!

@Christian, mein Programm schließt sich nicht, wenn man auf das x drückt, sondern verschwindet als TrayIcon. Um das zu realisieren prüfe ich in onCloseQuery, obs ein Close übers Menü war. Wenn nicht bleibt's im Tray. Deswegen die Problematik mit dem Runterfahren/Abmelden.
Der ürsprüngliche Code ist schon ein bissl älter, aber ich hab einfach noch keine bessere / benutzerfreundlichere Methode gefunden.

mfg Ingo
mfg Ingo

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich dacht mir schon sowas, wiso fängst du nicht das schliessen des Hauptformulars über dessen OnClose und setzt dabei CloseAction auf caHide.

OnCloseQuerry kannst dann zum rausfinden ob das System eine Anforderund an die Applikation stellt zu schliessen.

Funktioniert auf jedem OS und ist um einiges sauberer gelöst.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten