Morgen
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
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...
Delphi-Quellcode:
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.
Bye