内嵌第三方EXE程序窗口

本文介绍了如何将第三方应用窗口嵌入到自开发程序中,通过设置目标窗口为宿主窗口的子窗口实现无缝融合。关键步骤包括:1) 创建透明宿主窗口;2) 获取第三方应用窗口句柄;3) 处理WM_SIZE消息以适应宿主窗口大小变化;4) 在退出时关闭第三方程序。此外,还讨论了屏蔽第三方应用窗口的最大最小化按钮的方法,以提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,在做一个将一个第三方应用窗口嵌入自己的程序窗口内部的功能,经过几次摸索,终于能比较好的嵌入进去了,为方便叙述,以下称需要被嵌入应用窗口为目标窗口,承载嵌入应用窗口的为宿主窗口,目标窗口为任意第三方应用,宿主窗口为自己开发。

将目标窗口完美嵌入,关键在于将目标窗口做为宿主窗口的子窗口,这样操作系统就会帮我们完成移动,绘制等操作,为目标窗口设置父窗口,也很简单,调用一个API即可:

HWND SetParent(      
    HWND hWndChild,
    HWND hWndNewParent
);

第一个参数是子窗口的句柄,也即目标窗口的句柄,第二个窗口为我们想设置的目标窗口的父窗口,即宿主窗口,由于宿主窗口的程序为自己开发,要拿到这个句柄就很简单,关键在于如何找到目标窗口的句柄。

找到目标窗口的句柄,也有一个API:

HWND FindWindow(      
    LPCTSTR lpClassName,
    LPCTSTR lpWindowName
); 

第一个参数为窗口的类名,创建窗口之前,首先需要使用RegisterClass向系统注册一个窗口类WNDCLASS,这个结构体中有个lpszClassName字段,就代表这个窗口类的名称。第二个参数为目标窗口的标题。具体这两个值多少,可以使用vs自带的spy++工具,查看下目标窗口,就能获得。

下面分步骤,结合代码,详细展示下整体流程。

1.首先准备好宿主窗口的窗体,并且使其透明。

这个可以通过响应WM_CTLCOLOR消息,并返回一

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值