如何实现把其他程序的显示窗口合并到bcb开发的程序窗口中(如panel中)

xabcxyz 2009-09-02 10:42:23
如何实现把其他程序的显示窗口合并到bcb开发的程序窗口中(如panel中)
...全文
301 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
castlooo 2009-09-09
  • 打赏
  • 举报
回复
mark 琢磨
laowang2 2009-09-07
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
H1,H2: Hwnd;
begin
// 先執行要放入專案的外部EXE檔案(用隱藏方式來執行)
WinExec('C:\Program Files\TOOLS\MYIE\MyIE.exe',SW_HIDE);
// 再找到該外部EXE檔案
H1 := FindWindow(nil,PChar('MyIE'));
// 假設找到執行之程式後要放在 Panel1
H2 := Panel1.Handle;
// 將外部程式放在 Panel1
Windows.SetParent(H1,H2);
// 設定外部程式顯示的位置及大小
// MoveWindow(hWnd,X,Y,W,H,B) : RETURN BOOL
// hWnd: HWND
// X:Integer; {horizontal}
// Y:Integer; {vertical}
// W:Integer; {the new window width}
// H:Integer; {the new window height}
// B:BOOL; {the repaint flag}
MoveWindow(H1,0,0,Panel1.Width,Panel1.Height,True);
//
Windows.ShowWindow(H1,SW_ShowNormal);
end;
sfengnet 2009-09-07
  • 打赏
  • 举报
回复
楼主的意思是不是想把屏保在 其他窗口显示出来, aaa.scr /P 其他窗口句柄 就可以实现了
xabcxyz 2009-09-07
  • 打赏
  • 举报
回复
谢谢妖哥和六楼的兄弟,我是在筹划集成几个监控软件,因为设备不同,各自的软件在一个屏幕上各自独立显示的话影响老板的收入,至少也要弄到一个卡片式的主界面里.

我还没有试验,就是在windows api中查到SetParent时说必须是本进程的HWND才有效,所以发帖问问.

等我试了,再告大家行不行吧.
fxworld 2009-09-07
  • 打赏
  • 举报
回复

程序中安装钩子 WH_CBT ,如果属于你需要的窗口,调用SetParent函数。
lghndyz 2009-09-07
  • 打赏
  • 举报
回复
很强大!!
纯冰糖 2009-09-07
  • 打赏
  • 举报
回复
嗯,帮顶,学习学习。
lanxing_0312 2009-09-03
  • 打赏
  • 举报
回复
合并的目的是什么呢?,能否截个图,看一下,我也在做这方面的程序。
Waiting4you 2009-09-03
  • 打赏
  • 举报
回复
等待进程启动完毕可以试试用WaitForInputIdle方法,MSDN里这么说的。
njxuyun 2009-09-03
  • 打赏
  • 举报
回复
楼上的大哥真是强人!小弟也想解决这样的问题,请大哥赐教一个具体的例子,小弟感激不尽
ccrun.com 2009-09-02
  • 打赏
  • 举报
回复
基本原理就是:启动目标进程-->捕捉进程窗口-->设置该窗口的父窗口为本进程的某窗口
但是这中间涉及的问题很多,比如用ShellExecute启动目标进程,必须准确得到该进程中主窗口的创建时间,否则查找窗口会失败(FindWindow/EnumWindow等),适当延时虽然有效,但是在不同配置的机器上,程序启动快慢差别很大。还有一种就是用CreateProcess启动进程,获得进程PID和主线程的ID,再枚举线程窗口(EnumThreadWindows)。但我感觉还是用钩子比较合适,钩到新创建的窗口,判断其所属的进程是否为目标进程。只要成功获取到窗口句柄,一个::SetParent就搞定嵌入Panel中了。另外,目标进程结束,窗口销毁也要通过钩子及时通知本程序做相应的处理。

代码我暂时不写了,原理讲清楚了,楼主可以自己尝试写。如果没有解决,我再来回复。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧