一剑封喉,接着:
1.基础:
The RegisterWindowMessage function defines a new window message that is guaranteed to be unique throughout the system. The returned message value can be used when calling the SendMessage or PostMessage function.
UINT RegisterWindowMessage(
; ; LPCTSTR lpString // address of message string
;
;
;
Parameters
lpString
Points to a null-terminated string that specifies the message to be registered.
;
Return Values
If the message is successfully registered, the return value is a message identifier in the range 0xC000 through 0xFFFF.
If the function fails, the return value is zero.
Remarks
The RegisterWindowMessage function is typically used to register messages for communicating between two cooperating applications.
If two different applications register the same message string, the applications return the same message value. The message remains registered until the Windows session ends.
Only use RegisterWindowMessage when more than one application must process the same message. For sending private messages within a window class, an application can use any integer in the range WM_USER through 0x7FFF. (Messages in this range are private to a window class, not to an application. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use values in this range.)
2.代码实例:This application sends the message:
procedure TForm1.FormCreate(Sender: TObject);
begin
; {register the user defined message}
; UserMessage := RegisterWindowMessage('System Wide User Defined Message');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
; ReturnValue: LRESULT; ; // holds the result returned by SendMessage
begin
; {send the user defined message to the specified window}
; ReturnValue := SendMessage(FindWindow('TForm1','RegisterMessage Get Example'),
; ; ; ; ; ; ; ; ; ; ; ; ; ; ;UserMessage, 0, 0);
; {display the result of the message processing}
; Button1.Caption := 'SendMessage Result: '+IntToStr(ReturnValue);
end;
and this application receives it:
procedure TForm1.DefaultHandler(var Msg);
begin
; {allow default message handling to occur}
; inherited DefaultHandler(Msg);
; {if the user defined message was recieved...}
; if (TMessage(Msg).Msg=UserMessage) then
; begin
; ; {...send a reply. this causes the message to return
; ; ;immediately if sent by one of the SendMessage functions}
; ; ReplyMessage(5);
; ; {enable the timer and turn on a user interface object}
; ; Timer1.Enabled := TRUE;
; ; Label2.Visible := TRUE;
; ; {indicate if the message was sent via one of the SendMessage functions}
; ; if InSendMessage then Label3.Visible := TRUE;
; end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
; {register the system wide user defined message}
; UserMessage := RegisterWindowMessage('System Wide User Defined Message');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
; {turn off the user interface elements after one second}
; Timer1.Enabled := FALSE;
; Label2.Visible := FALSE;
; Label3.Visible := FALSE;
end;
The Tomes of Delphi 3: Win32 Core API Help File by Larry Diehl
3.请认真阅读,理解。:)