VC实现A进程窗口嵌入到B进程窗口中显示的方法
2014-07-14 11:04
756 查看
本文通过一个Demo示例讲述把A应用程序嵌入到B应用程序中显示的方法。
主要代码如下:
//在B应用启动时创建A进程 CreateProcess(_T("A.exe"),NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,NULL,NULL); Sleep(30); HWND hWndChild = FindWindow(_T("AAA"),_T("AAA")); while(!hWndChild) { hWndChild = FindWindow(_T("AAA"),_T("AAA")); } //移动A进程窗口位置 MoveWindow(hWndChild,80,20,240,320,TRUE); //A进程窗口嵌入B进程窗口中 SetParent(hWndChild,hWnd);
An application can use the SetParent function to set the parent window of a pop-up, overlapped, or child window. The new parent window and the child window must belong to the same application。
这是从msdn里面对SetParent的使用描述,说SetParent要嵌入的窗口必须和被嵌入的窗口属于同一个应用程序,其实不然,不过SetParent返回的确实是一个Null,这是因为A进程中的窗口并不存在父窗口,而SetParent调用后会返回父窗口的句柄,故返回Null。但是却不会影响A进程窗口嵌入。
在B进程窗口显示时收到的WM_ACTIVE中先会收到WA_ACTIVE或者WA_CLICKACTIVE,然后也会收到WA_INACTIVE参数,也就是说在某个时候,B进程没有被置为最前窗口,这应该是当调用SetParent时,影响了B进程窗口。如果你希望B进程窗口收到WM_ACTIVE消息,必须调用SetForegroundWindow(hWnd),如果当前窗口不是最前窗口时,退出或者最小化时不会收到WM_ACTIVE消息中的WA_INACTIVE。尤其做嵌套应用程序的代码中,应该牢记于心。
除此以外,当使用SetParent(hWndChild,hWnd)把A进程到B进程窗口中时,这时使用FindWindow查询到A进程的窗口句柄为null。
您可能感兴趣的文章:
相关文章推荐
- VC实现A进程窗口嵌入到B进程窗口中显示的方法
- 四种方法实现VC枚举系统当前进程
- 四种方法实现VC枚举系统当前进程
- [VC/MFC]实现程序运行时隐藏窗口 (多种方法,推荐方法2)
- VC编程实现内核方法实现进程保护
- vc实现窗口全屏的一些方法
- 四种方法实现VC枚举系统当前进程
- 四种方法实现VC枚举系统当前进程(转)
- 正确的方法去拦截OnNewWindow2实现在同一个窗口显示_target的网页
- 四种方法实现VC枚举系统当前进程
- 四种方法实现VC枚举系统当前进程
- 【原创】A进程窗口嵌入到B进程窗口中显示
- vc嵌入Word后怎莫实现数据的同步刷新及在视图里显示所有文字
- Vista系统下IE8有N个进程只显示一个的实现方法
- vc实现窗口全屏的一些方法
- 四种方法实现VC枚举系统当前进程
- 四种方法实现VC枚举系统当前进程
- 四种方法实现VC枚举系统当前进程[包含自己注释]
- 让js弹出窗口居前显示的实现方法
- vc实现窗口全屏的一些方法