![]() |
RegisterWindowMessage und vcl...
Liste der Anhänge anzeigen (Anzahl: 1)
Morgen :chat:
Da ich mich gerade bischen mit Windows-Messages beschäftige, wollt ich fragen, ob das hier so korrekt ist, oder ob es vielleicht anders besser geht... Der Teil mit der Registerierten Windowsmeldung muß aber bleiben, aber das Nachrichten empfangen, dass ist vielleicht nicht korrekt... Naja vielleicht aber auch nicht, da es ja funktioniert :zwinker: Aja und mit dem WM_INITDIALOG weiß ich net wirklich weiter, da steht seltsames in der Hilfe drinne, was ich ganz und gar nicht verstehen will... :gruebel:
Delphi-Quellcode:
Bye
Unit FMain;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TfrmMain = Class( TForm ) cmdRegister: TButton; cmdSend: TButton; Procedure FormCreate( Sender: TObject ); Procedure FormDestroy( Sender: TObject ); Procedure cmdRegisterClick( Sender: TObject ); Procedure cmdSendClick( Sender: TObject ); Private { Private-Deklarationen } fHook: TWindowHook; fMyMessage: Cardinal; Function MessageHandler( Var Message: TMessage): Boolean; Public { Public-Deklarationen } End; Var frmMain: TfrmMain; Implementation {$R *.dfm} Procedure TfrmMain.FormCreate( Sender: TObject ); Begin fHook := MessageHandler; // fHook meinem MessageHandler zuweisen Application.HookMainWindow( fHook ); // Hook laden End; Procedure TfrmMain.FormDestroy(Sender: TObject); Begin Application.UnhookMainWindow( fHook );// Hook entladen End; Function TfrmMain.MessageHandler( Var Message: TMessage): Boolean; Begin Result := False; // Wir haben die Nachricht noch nicht behandelt... If Message.Msg = fMyMessage Then Begin// Ist es unsere Nachricht? beep; Result := True; End; // WM_INITDIALOG ?!? Soll True zurückliefern ?!?!?!? Why? End; Procedure TfrmMain.cmdRegisterClick( Sender: TObject ); Begin fMyMessage := RegisterWindowMessage( 'Testy_Message' );// Unsere Nachricht registrieren End; Procedure TfrmMain.cmdSendClick( Sender: TObject ); Begin SendMessage( HWND_BROADCAST, fMyMessage, 0, 0 );// Unsere Nachricht senden End; end. |
Re: RegisterWindowMessage und vcl...
Paßt besser in Win32 API
Zitat:
Den Rest der Frage habe ich nicht wirklich verstanden. Wenn du es innerhalb einer einzigen Anwendung benutzt, also ohne die Fensternachrichten zwischen verschiedenen Apps hin- und herzuschicken, kannst du RegisterWindowMessage() komplett weglassen. Ist sinnlos, weil das nur garantiert, daß du "systemweit" eine einzigartige Fensternachricht bekommst. Es dient dazu, daß verschiedene Anwendungen, welche sich auf den Namen einer Nachricht geeinigt haben, diesen Namen verwenden können um a.) den Wert einer bereits registrierten Fensternachricht auszulesen oder b.) eine slche neu zu registrieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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