AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Messages bei nonVCL?

Offene Frage von "blackdrake"
Ein Thema von blackdrake · begonnen am 11. Jun 2008 · letzter Beitrag vom 15. Jun 2008
Antwort Antwort
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

Messages bei nonVCL?

  Alt 11. Jun 2008, 18:06
Hallo.

Ich möchte folgenden Code in nonVCL (also nur noch DPR, keine DFMs mehr) portieren:

Delphi-Quellcode:
type
  TMainForm = class(TForm)
  private
    procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION;
  end;
Ich habe es bereits mit Application.OnTerminate probiert, aber es hat nicht funktioniert. Sobald ich nicht mehr mit Forms arbeite (TMainForm.MeineProzedur wird zu MeineProzedur), funktioniert es nicht mehr. Meldung kann ich nochmal nachreichen.

Dieser Zusatz "message WM_ENDSESSION" funktioniert auch nur innerhalb eines Forms.

Muss ich nun mit einer Schleife arbeiten, die mittels PeekMessage das Shutdown-Signal abfängt? Dann müsste ich aber extra dafür einen Thread anlegen, weil der Programmfluss sich ja primär mit einer anderen Aufgabe beschäftigt.

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 18:08
Nun ja, du brauchst eine Nachrichtenschleife und eine Fensterprozedur und damit verbunden eben ein Fenster, da diese Nachricht an toplevel Fenster verschickt wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 18:10
Nachrichtenschleife, ja. Aber die Anwendung arbeitet ohne Fenster im Hintergrund. Hatte ich vergessen dazu zu sagen. Ist also alles unsichtbar, deswegen will ich keine Forms.

Ist eine Nachrichtenschleife in einer nonVCL unabdingbar? Muss diese in einen Thread, damit das Programm primär was anderes arbeiten kann?
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 18:24
Kommt drauf an wie du nonVCL definierst. An was ist die Nachrichtenschleie gebunden, wenn nicht an ein Fenster?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 18:30
Wenn ich keine sichtbaren Elemente habe, gibt's auch kein Fenster und dann habe ich quasi nur Pascal. Das ist absolutes nonVCL

Delphi-Quellcode:
program xyz;

uses
  SysUtils, ...;

procedure HerunterfahrenEvent();
begin
  // Aktionen beim Herunterfahren
end;

begin
  // ToDo: Hier Arbeit machen

  // Problem: HerunterfahrenEvent() beachten;

  // Ende des Programms
end;
Für Nachrichtenschleife könnte ich einen Thread aufmachen. An ein Fenster kann ich es ja nicht binden. Aber ist das überhaupt professionell, extra einen Thread aufzumachen, der lediglich die Aufgabe hat, was zu machen, sobald das Shutdown-Signal kommt? Oder gibt's was alternatives?
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 18:34
Du könntest ein Fenster erzeugen, dieses aber nicht anzeigen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Messages bei nonVCL?

  Alt 11. Jun 2008, 19:34
Windows bietet eine Möglichkeit, Konsolen-Handler zu registrieren, mit denen man u.A. strg-c, Beenden des Konsolenfensters und Herunterfahren abfangen kann. MSDN-Library durchsuchenSetConsoleCtrlHandle Laut MSDN sollte das auch ohne Konsole funktionieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Messages bei nonVCL?

  Alt 12. Jun 2008, 10:48
ansonten hilft auch sich ein unsichtbares Top-Level-Fenster zu erstellen,
oder besser gleich ein MessageOnly-Fenster.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Messages bei nonVCL?

  Alt 15. Jun 2008, 23:29
Prinzipiell werden Nachrichten ja an Threads verschickt und auch wenn ein Thread mehrere Fenster hat, hat der Thread nur eine Nachrichtenschleife. Folglich ist es durchaus möglich eine Nachrichtenschleife in einem Thread einzurichten und per PostThreadMessage() an den Thread zu richten. Dabei sollte klar sein, daß der Unterschied zwischen Post* und Send* hier auch gilt, es aber keine Send*-Variante gibt.
  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 09:00 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