Unit1; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; TForm1 = (TForm) Button1: TButton; Edit1: TEdit; Button1Click(Sender: TObject); ; Form1: TForm1; TForm1.Button1Click(Sender: TObject); h: HWND; Size: Integer; CopyDataStruct: TCopyDataStruct; h := FindWindow(, ); h > Size := ByteLength(Edit1.Text) + ; CopyDataStruct.lpData := PChar(Edit1.Text + ); CopyDataStruct.dwData := WM_COPYDATA; CopyDataStruct.cbData := Size; SendMessage(h, WM_COPYDATA, , Integer(@CopyDataStruct)); ; ; .
接收代码:
Unit1; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; TForm1 = (TForm) Memo1: TMemo; FormCreate(Sender: TObject); WMCopyData( Message: TWMCopyData); WM_COPYDATA; ; Form1: TForm1; TForm1.FormCreate(Sender: TObject); Caption := ; ; TForm1.WMCopyData( Message: TWMCopyData); Memo1.Lines.Add(PChar(Message.CopyDataStruct.lpData)); ; .
该代码已在 Delphi 2010 下测试过了.
发现 skymesh 朋友对消息操作不是太熟, 顺便告知个小技巧(其实博客中可能早提到过):
在 TForm1 = class(TForm) ... end; 中执行 Ctrl+空格;
然后输入: wm...(譬如本例输入 wmcopyd 即可) 后回车;
接着执行 Ctrl+Shift+C, 会自动完成上面大部分的消息代码.
转载于:https://blog.51cto.com/zsqztg/289296