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
Thema durchsuchen
Ansicht
Themen-Optionen

PostMessage mit WM_CLOSE funktioniert nicht

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

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 16: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
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 16:18
Grundsatzfrage: Warum lässt du überhaupt das Fenster erst aufgehen und brichst es nicht schon vorher ab?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#3

AW: PostMessage mit WM_CLOSE funktioniert nicht

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

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

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 18: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

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

AW: PostMessage mit WM_CLOSE funktioniert nicht

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

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#6

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 18: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
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 18: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

n/a Beiträge
 
#8

AW: PostMessage mit WM_CLOSE funktioniert nicht

  Alt 17. Okt 2014, 18: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, 18: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
Antwort Antwort


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 12:40 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