关于两个独立的程序间传递消息的问题(100分)

  • 主题发起人 主题发起人 hotdot
  • 开始时间 开始时间
H

hotdot

Unregistered / Unconfirmed
GUEST, unregistred user!
程序A向程序B发送消息,在A中可以找到B的句柄,但是B程序为MDI模式,我要实现的是在A中找到B的MDI窗口句柄,并向B的某子窗发消息,应该在A中怎么操作呢?
 
找到接受消息的子窗体的句柄,然后sendmessage就行了
 
to迷糊:问题在于无法找到子窗的句柄<br>A程序中这样写的:<br>&nbsp; &nbsp;hParent := FindWindow(nil, 'B的主窗口');<br>&nbsp; &nbsp;Hd := FindWindowex(hParent,0,'B的MDI子窗口类名称',nil); // 获得接受窗口的句柄<br><br>问题是A程序根本得不到子窗的句柄,我看到网上一些资料说,MDI窗口的句柄需要通过MDIChildren循环才可以得到,可是A中怎么才能做到获得B的MDIChildren呢?<br>
 
可能要用EnumChildWindows 函数枚举
 
下面的代码可以的<br>function EnumChildProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;<br>var<br>wtext: Array[0..255] of Char;<br>begin<br>Getwindowtext(hwnd, @wtext, 255);<br>if SameText(wtext, 'formchild') then &nbsp;//子窗口标题<br>&nbsp; PostMessage(hwnd, WM_close, 0, 0); &nbsp;//发wm_close消息<br>Result := True;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp;whandle:hwnd;<br>begin<br>&nbsp;whandle:=findwindow(nil,'formmain'); //主窗口窗体的标题<br>&nbsp;if whandle=0 then<br>&nbsp; &nbsp;showmessage('window not find')<br>&nbsp;else<br>&nbsp;begin<br>&nbsp; &nbsp;EnumChildWindows(whandle,@EnumChildProc,0);<br>&nbsp;end;<br><br>end;
 
就算EnumChildWindows 函数枚举,也应该是在B中操作的吧?<br><br>刚才点错,已经结贴了,请迷糊老兄在这里继续解惑?
 
后退
顶部