有两个程序,我想在A关闭时,发个消息给B程序,B程序中有过程OPENFILE(FILENAME:STRING); 让B自动运行此过程,有什么办法吗?这消息该怎么发呢?
解决方案 »
- 求助 关于 PrintDBGridEh Options属性
- 为啥我找的很多问题,CSDN的回答都排百度第一呀?
- could not create output file 'dy2.dcu'
- 这种TClientDataSet怎么才能可写
- 如何让数据表某一字段只能输入唯一值
- 急急急!15号要交程序!在FASTREPORT中如何加入自己写的函数!(保证给分!)
- delphi连oracle的问题
- stringgrid的小问题!
- 本地SQL创建数据表时出错???在线等待!!!
- 怎样将构件属性的变动储存起来?
- 三层中存储过程的调用问题!做过三层的帮忙进来看看!
- wwDBGrid中,怎样根据某个字段的值来改变该记录的颜色。
1, 得到窗口
2, 发送消息
有两个程序,我想在A关闭时,发个消息给B程序,B程序中有MainMenu1的过程procedure TMainForm.N19Click(Sender: TObject); 让B自动运行此过程,有什么办法吗?这消息该怎么发呢?
在B中定义消息处理函数:
procedure OnOpenFile(var Message: TMessage); message WM_OPENFILE;
在函数体中:
procedure TForm1.OnOpenFile(var Message: TMessage);
begin
if Message.msg = WM_COPYFILE then
//Write your code here!
end;
然后在A中发送消息, 假如B的窗口句柄是HandleB;
SendMessage(HandleB, WM_OPENFILE, 0, 0);
var
Form1: TForm1;
UniqueMsgID: Cardinal;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
UniqueMsgID := RegisterWindowMessage('wo');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
sendMessage(HWND_BROADCAST, UniqueMsgID, 0, 0);
end;
接收消息
var
Form1: TForm1;
UniqueMsgID: Cardinal;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
UniqueMsgID := RegisterWindowMessage('wo');
end;procedure TForm1.WndProc(var Msg: TMessage);
begin
if Msg.Msg = UniqueMsgID then
begin
sleep(2000);
Caption := '嘿嘿!收到啦!';
sleep(2000);
end;
inherited WndProc(Msg);
end;上面代码中的sendmessage改成postmessage不行,接收程序收不到消息