有两个程序,我想在A关闭时,发个消息给B程序,B程序中有过程OPENFILE(FILENAME:STRING); 让B自动运行此过程,有什么办法吗?这消息该怎么发呢?
解决方案 »
- 怎样在delphi中某text中显示保留字英文?
- 合并记录的问题。
- 怎么在没有安装delphi和fr的机器上运行fr开发的报表程序?
- sp1 中生成局临时数据表 ##@tempy,最后select * from #222,返回数据集出错,谢 谢
- 200分求一暴难算法,提供方案就给分,在线等
- Delphi中如何接收到计算机的串口信息,有无空间?
- 如何声明这个函数??--在线等待!
- 我做ERP的。3年没有编程了,最近想开始做点编程,希望交一些delphi的编程朋友!
- 有什么方法可以把文本文件加密,然后再解回来!
- Delphi中怎样调用存储过程?
- 三层中存储过程的调用问题!做过三层的帮忙进来看看!
- 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不行,接收程序收不到消息