AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi PostMessage mit WM_CLOSE funktioniert nicht

PostMessage mit WM_CLOSE funktioniert nicht

Ein Thema von devidespe · begonnen am 17. Okt 2014 · letzter Beitrag vom 17. Okt 2014
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 15:02
Hallo,

bei einem bestimmten Ereignis, welches im OnActivate Ereignis bzw der FormActivation-Prozedur abgefragt wird, möchte ich meine Applikation schließen und die Weiternutzung verhindern. Das habe ich versuchsweise mit:

PostMessage(Handle, WM_CLOSE, 0, 0);

gelöst. Innerhalb von Delphi XE funzt das auch problemlos, starte ich die Applikation aber direkt außerhalb von Delphi, bleibt dieser Befehl wirkungslos. Was kann man da tun ?
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#2

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 15:18
Grundsatzfrage: Warum lässt du überhaupt das Fenster erst aufgehen und brichst es nicht schon vorher ab?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#3

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 15:25
PostQuitMessage(0);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#4

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:18
PostQuitMessage(0);
VCL: Application.Terminate;

Aber wie gesagt, man kann natürlich erst vollgas geben, und wirft danach den Anker raus, bzw. schießt mit einem Panzer den Motorblock weg,
anstatt man garnicht erst losfährt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Okt 2014 um 17:29 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.108 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:25
Deine Analogien werden auch immer wilder
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:29
Grundsatzfrage: Warum lässt du überhaupt das Fenster erst aufgehen und brichst es nicht schon vorher ab?
Weil ich eine Funktion habe, die im festgelegten Intervall einen bestimmten Zustand überprüft, und wenn der eintritt, soll das Programm beendet werden. Gleichzeitig rufe ich diese Funktion in der FormActivate-Funktion auf, da der Zustand auch beim Programmstart einmalig geprüft werden soll.

Application.Terminate funktioniert übrigens nicht, das hab ich schon getestet.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#7

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:32
So besser?
  • Man kann natürlich das Haus (Form) bauen, einrichten (Create), dem Eigentümer das Exposé schicken (OnShow) und während der Eigentümer grade die Eingangstür hindurch will (OnActivate), reißt man alles schnell wieder ab (Exit), weil der doch nicht da rein durfte und man ihm garkein Haus geben wollte.
  • Oder man hört auf, bevor es los geht.

PS: Wenn dein Programm im Hintergrund startet, garnicht erst den Fokus bekommt, dann würde die Form wohl nicht aktiviert (bekommt den Eigabefokus nicht) und würde schön sichtbar bleiben und man könnte alles stundenlang sehen, wenn man den Vordergrundprozess zur Seite schiebt.
Und solange dein Programme/Fenster dann den Fokus nicht bekommt, kann man per Messages alles damit machen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Okt 2014 um 17:44 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:39
@himitsu
Macht immer wieder spaß deine Schnitzereien zu lesen

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 17:45
Gleichzeitig rufe ich diese Funktion in der FormActivate-Funktion auf, da der Zustand auch beim Programmstart einmalig geprüft werden soll.
Na dann prüfe das auch beim Programmstart
Delphi-Quellcode:
program MeineTolleAnwendung;

begin
  // hier ist der Start des Programms, hier prüfen

  if EinBesondererMoment then
    Exit;

  Application.Initialize;
  Application.CreateForm( TForm1, Form1 );
  Application.Run;
end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz