现有两个应用程序A和B,相对应的窗体是FormA和FormB,我想通过FormA窗体向FormB窗体发送窗体隐藏/显示消息,如何实现。分不够可以再加
解决方案 »
- Delphi 指针的问题,帮忙看看啊,不难的,在线等待,一解决马上结贴
- Delphi for php 出了正式版了吗?
- 【ADOquery和Query都有的BUG】
- 怎么把右边列表里面的多余项,但是左边没有的项,删除掉????
- MDI窗体启动问题
- 文件的使用 类型文件
- 如何将listview中两个Listitem互换——请高手指点
- 请问能不能捕获Blob has been modified这个错误,或者是写一段代码检查以下数据库是否错误??如有的话就退出!!我会加分的!!
- 高分:Delphi中如何实现对简单html的显示、编辑和保存?
- delphi7 用 idhttp.get 抓取网页显示乱码如何解决?
- 怎么把一个文字用别的字符表示出来!
- 一个表有几百万条记录在里面,我使用查询功能,但是老是死机,该怎么办?建立索引?该怎么建立?
2 Hook FormB; 较难
WM_MYMSG = WM_USER+1;function SendMsgToOtherProgram( const v_strWindowCaption: String ): Boolean;
var
hProgramWnd: HWND;
begin
hProgramWnd := FindWindow( nil, PChar(v_strWindowCaption) );
if 0<>hProgramWnd then
begin
SendMessage( hProgramWnd, WM_MYMSG, 0, 0 );
Result := TRUE;
end
else
Result := FALSE;
end;
const WM_HideOrShow=WM_User+3;
procedure SendToB;
begin
SendMessage(hB,WM_HideOrShow,wp,lp); //lp=0 then b hide else show,wp always 0
end;
程序B
const WM_HideOrShow=WM_User+3; //same to A
procedure HideOrShow(var msg:TMessage);message WM_HideOrShow;//dowith message
implementation
procedure HideOrShow(var msg:TMessage)
begin
if msg.lp=0 then Hide
else Show;
end;
WM_COPYDATA
FindWindow(ClassName,Caption) ; // 得到句柄
如:
const wm_fromforma = wm_user + 100;然后在forma中发消息给formb
在formb中拦截此消息进行想要的处理