Einzelnen Beitrag anzeigen

Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

RegisterWindowMessage und vcl...

  Alt 18. Jan 2005, 08:36
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
Angehängte Dateien
Dateityp: zip messagetest_191.zip (5,7 KB, 5x aufgerufen)
Christian
  Mit Zitat antworten Zitat