主程序
注册消息:
m_Msg := RegisterWindowMessage('1111');//返回系统唯一消息号,1111为自定义消息内容
重写消息处理函数
procedure TK9Main.WndProc(var Message: TMessage);
begin
if Message.msg = m_Msg then
begin
ShowMessage(inttostr(message.lparam));
end; inherited;end;另外一个应用程序
procedure TFrmFaultRec.ShowMainForm; //打开主模块
var
strMain_WindowName:string;
strMain_ClassName:string;
hHandle_Msg:THandle;
hHandle_Main:THandle;
begin
strMain_ClassName :='TK9Main';//主程序类名称
strMain_WindowName :='K9Main'; //主程序窗口名称 hHandle_Main:=FindWindow(PChar(strMain_ClassName), PChar(strMain_WindowName)); hHandle_Msg:=RegisterWindowMessage('1111'); //注册系统消息,返回系统唯一消息号 SendMessage(hHandle_Main,hHandle_Msg,0,0);
end;为什么在ShowMainForm时 主程序 接收不到 消息呢?
请高手指教!
注册消息:
m_Msg := RegisterWindowMessage('1111');//返回系统唯一消息号,1111为自定义消息内容
重写消息处理函数
procedure TK9Main.WndProc(var Message: TMessage);
begin
if Message.msg = m_Msg then
begin
ShowMessage(inttostr(message.lparam));
end; inherited;end;另外一个应用程序
procedure TFrmFaultRec.ShowMainForm; //打开主模块
var
strMain_WindowName:string;
strMain_ClassName:string;
hHandle_Msg:THandle;
hHandle_Main:THandle;
begin
strMain_ClassName :='TK9Main';//主程序类名称
strMain_WindowName :='K9Main'; //主程序窗口名称 hHandle_Main:=FindWindow(PChar(strMain_ClassName), PChar(strMain_WindowName)); hHandle_Msg:=RegisterWindowMessage('1111'); //注册系统消息,返回系统唯一消息号 SendMessage(hHandle_Main,hHandle_Msg,0,0);
end;为什么在ShowMainForm时 主程序 接收不到 消息呢?
请高手指教!
句柄有没有得到啊。。
if hHandle_Main = NULL then
showmessage('找不到')
else
SendMessage(hHandle_Main,hHandle_Msg,0,0);
我后来修改过的啊!应该时可以的啊 !但是就是没有反应的 为什么啊?
主程序
注册消息:
m_Msg := RegisterWindowMessage('1111');//返回系统唯一消息号,1111为自定义消息内容
重写消息处理函数
procedure TK9Main.WndProc(var Message: TMessage);
begin
if Message.msg = m_Msg then
begin
ShowMessage(inttostr(message.lparam));
end; inherited;end;另外一个应用程序
procedure TFrmFaultRec.ShowMainForm; //打开主模块
var
strMain_WindowName:string;
strMain_ClassName:string;
hHandle_Msg:Cardinal;
hHandle_Main:THandle;
begin
strMain_ClassName :='TK9Main';//主程序类名称
strMain_WindowName :='K9Main'; //主程序窗口名称 hHandle_Main:=FindWindow(PChar(strMain_ClassName), PChar(strMain_WindowName)); hHandle_Msg:=RegisterWindowMessage('1111'); //注册系统消息,返回系统唯一消息号 SendMessage(hHandle_Main,hHandle_Msg,0,0);
end;为什么在ShowMainForm时 主程序 接收不到 消息呢?
请高手指教!
也就是说:
if hHandle_Main = NULL then
showmessage('找不到')
else
SendMessage(hHandle_Main,hHandle_Msg,0,0);即使主程序没有 打开 也执行 第二条语句 这是为什么呢?
var
FrmMain: TFrmMain;
implementation{$R *.dfm}procedure TFrmMain.FormCreate(Sender: TObject);
begin
m_Msg := RegisterWindowMessage('1111');
Application.OnMessage := WndProc;
end;procedure TFrmMain.WndProc(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = m_Msg then
begin
ShowMessage(inttostr(Msg.lparam));
end;
end;end.2.procedure TForm1.Button1Click(Sender: TObject);
var
strMain_WindowName:string;
strMain_ClassName:string;
hHandle_Msg:THandle;
hHandle_Main:THandle;
begin
strMain_ClassName :='TFrmMain';//主程序类名称
strMain_WindowName :='FrmMain'; //主程序窗口名称 hHandle_Main:=FindWindow(PChar(strMain_ClassName), PChar(strMain_WindowName)); hHandle_Msg:=RegisterWindowMessage('1111'); //注册系统消息,返回系统唯一消息号 PostMessage(hHandle_Main,hHandle_Msg,0,0);end;没有问题,可以得到消息
我得是 两个 不同的应用程序啊!测试的时候是两个不同的 .exe 这样可以吗?
谢谢了! 我还是测试通不过!?