利用RegisterWindowMessage在不同程序窗体间传递消息
2010-02-19 09:55
381 查看
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } UserMessage : UINT; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin sendmessage(HWND_BROADCAST,UserMessage ,handle,0); end; procedure TForm1.FormCreate(Sender: TObject); begin UserMessage := RegisterWindowMessage('WM_SAMPLE'); end; end.
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm2 = class(TForm) Image1: TImage; procedure FormCreate(Sender: TObject); private { Private declarations } UserMessage : UINT; procedure GetImage(Form1Window : HWND); public { Public declarations } protected procedure WndProc(var Message: TMessage); override; end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin UserMessage := RegisterWindowMessage('WM_SAMPLE'); end; procedure TForm2.WndProc(var Message: TMessage); begin if Message.Msg = UserMessage then GetImage(Message.WParam) else inherited; end; procedure TForm2.GetImage(Form1Window : HWND); var Form1DC: HDc; Form1Rect: TRect; begin image1.Picture := nil; Form1DC := GetWindowDC(Form1Window); GetWindowRect(Form1Window,Form1Rect); image1.Width := Form1Rect.Right-Form1Rect.Left; image1.Height := Form1Rect.Bottom - Form1Rect.Top; BitBlt(Image1.Canvas.Handle,0,0,image1.Width, image1.Height, Form1DC, 0, 0, SRCCOPY); Image1.Refresh; ReleaseDC(Form1Window, Form1DC); SetForegroundWindow(handle); beep; end; end.
相关文章推荐
- 利用RegisterWindowMessage在不同程序窗体间传递消息
- 利用RegisterWindowMessage在不同程序窗体间传递消息
- 不同程序间传递消息
- C# 利用接口在窗体间传递消息(很基础很实用)
- C++Builder利用WM_COPYDATA消息在不同程序间传数据
- 程序运行时,利用反射调用不同窗体
- MFC在不同的类窗体之间传递消息
- winform程序三个窗体间同步数据(六):利用多播委托同步数据
- 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了
- 利用WCF的Duplex服务向Winform程序推送消息
- 安装全局消息钩子实现dll窗体程序注入
- nginx如何利用ngx_channel_t在进程间传递消息
- 利用回调函数在线程和主类中传递消息
- quick 自定义事件,利用这个事件可以传递消息
- Unity事件管理类,用于不同对象之间传递消息
- C#窗体之间传递消息和事件
- 在C#中用户控件与窗体间的消息传递
- 利用Bundle实现Android Activity间消息的传递
- 利用dbus-send在命令行下给程序发送消息,调用其相应的函数
- 如何为SDI程序中多个不同视图路由命令消息