社区
ActiveX/COM/DCOM
帖子详情
如何把一个应用程序嵌入到另外一个应用程序
shaohui
2006-12-14 07:00:08
我想把一个应用程序嵌入到另外一个应用程序.比如说,我想开发一个有多个tab的应用程序,而其中每一个tab标签运行一个已经开发好的应用程序,比如记事本.那么我就可以像FireFox那样打开一个窗口而有不同的tab,每个tab里面都运行一个记事本程序.另外还有一个问题就是,要在不修改被嵌入的应用程序,不知道有没有比较好的办法,是否是用ActiveX,谢谢.
...全文
1350
14
打赏
收藏
如何把一个应用程序嵌入到另外一个应用程序
我想把一个应用程序嵌入到另外一个应用程序.比如说,我想开发一个有多个tab的应用程序,而其中每一个tab标签运行一个已经开发好的应用程序,比如记事本.那么我就可以像FireFox那样打开一个窗口而有不同的tab,每个tab里面都运行一个记事本程序.另外还有一个问题就是,要在不修改被嵌入的应用程序,不知道有没有比较好的办法,是否是用ActiveX,谢谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shaohui
2006-12-18
打赏
举报
回复
re:jjwwang
OleContainer应该是行不通的,OLE只能包含文档对象,对于其他应用程序好像不可以哦
cczlp(不惑) 说得很详细,谢谢
pp616
2006-12-17
打赏
举报
回复
目前没有bcb环境。有机会一定要写个demo试下。
sczyq
2006-12-17
打赏
举报
回复
to: pp616(傻小子)
在含MDI的DLL中,若不进行如下处理,肯定出错,原因就是DLL也有Application之故!
TApplication *DllApplication = NULL;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if (reason == DLL_PROCESS_ATTACH)
DllApplication = Application;
if (reason == DLL_PROCESS_DETACH)
Application = DllApplication;
return 1;
}
CACACACACA
2006-12-17
打赏
举报
回复
不知楼主的具体情况.
楼上说的很详细了.
OleContainer也可试试.
cczlp
2006-12-17
打赏
举报
回复
keiy() 说的基本没错,只是可能对某些程序不适用。
对于记事本和画图这样简单程序,还是可以的。
可以试一下,窗体上加一个PageControl,建2个Page,启动记事本和画图,移动到左上角,执行:
HWND hwnd1 = FindWindow("Notepad", NULL);
if (hwnd1 != NULL)
{
::SetParent(hwnd1, PageControl1->Pages[0]->Handle);
}
HWND hwnd2 = FindWindow("MSPaintApp", NULL);
if (hwnd2 != NULL)
{
::SetParent(hwnd2, PageControl1->Pages[1]->Handle);
}
pp616
2006-12-17
打赏
举报
回复
"而且采用动态调入一个DLL文件,同样也会在内部产生一个 Application"
调入dll只是把dll装入内存,然后把那段物理内存映射到EXE的进程空间内,DLL本身并不分配地址空间的。如何内部产生一个Application???
shaohui
2006-12-17
打赏
举报
回复
Great, 谢谢,keiy和daydayup234
我回去试一下.
sczyq
2006-12-17
打赏
举报
回复
keiy() 的办法实现起来肯定有问题。
因为,每一个CreateProcess 调用一个 exe ,肯定会产生一个 Application, 而且采用动态调入一个DLL文件,同样也会在内部产生一个 Application,关键是这两个(主程序与被调用的)Application之间如何切换,若切换不正确,产生的错误可能会导致系统崩溃。
因此,采用同一种开发工具、采用DLL方式调入,肯定是首选。
daydayup234
2006-12-16
打赏
举报
回复
keiy的方法已经充分了
也可以调整思路,尝试一下:
1 一个exe,多个dll 或者
2 在"主" exe的res资源文件“加入” 各个“分”exe
柯本
2006-12-16
打赏
举报
回复
再看了下楼主的要求,事实上是我理解错了,我以为是要将当前应用嵌入到其它应用中,而楼主的要求是将其它应用嵌入到当前应用中,这个理论上应该可以的
1.在当前应用建多个窗口(只要有句柄的窗口就可以了,如TPenl就可以)
2.用CreateProcess运行要嵌入的应用
3.得到嵌入应用主窗口的Handle(可用EnumThreadWindows/GetTopWindow)
4.将嵌入应用主窗口的父窗口指向1的窗口( SetParent)
5. 调整嵌入应用主窗口的大小位置(SetWindowPlacement)
6.重复2-5
我只是大概提供了一个思路,其实楼主做的,类似Exlporer(桌面)
wz
2006-12-15
打赏
举报
回复
顶
shaohui
2006-12-15
打赏
举报
回复
哦,其实我是想把putty嵌入到另外一个程序中,这样的话就可以有一个多窗口的putty了,当然没有什么插件了.其它程序也类似,不知道有没有现成的控件可以完成这个.
谢谢keiy.
zyyoung
2006-12-14
打赏
举报
回复
activx
柯本
2006-12-14
打赏
举报
回复
1.如果你的应用程序类似IE等支持插件的话,没任何问题
2.用线程注入技术,这个有难度,网上有一些资料,查一下
3.用HOOK技术,可能对某些应用有用
想不到其它的方法(你的应用与ActiveX不一定有关)
嵌入
式Linux
应用程序
开发-(1)第
一个
嵌入
式QT
应用程序
本文介绍如何使用QtCreator开发环境构建并编译
嵌入
式Qt
应用程序
。通过实例演示了从新建项目到
应用程序
部署的全过程,包括界面设计及触摸屏交互功能。
一个
应用程序
的窗口如何
嵌入
另
一个
应用程序
窗口中?
本文深入探讨了
应用程序
窗口
嵌入
的实现机制,涵盖Windows和Linux平台的API方法,包括HWND/X11句柄操作、WebView2、Qt框架
嵌入
及跨平台方案。重点分析了窗口父子关系、消息传递、输入路由和图形渲染等关键技术点,并讨论了现代趋势如WebAssembly和云原生窗口的发展方向。
【
嵌入
式——QT】多窗体
应用程序
设计
本文围绕
嵌入
式QT多窗体
应用程序
设计展开。介绍了常用窗体基类,如QWidget、QDialog、QMainWindow等及其用途,还阐述了QWidget的主要函数,包括setAttribute定义窗体属性、setWindowFlags设置窗体标记、setWindowState设置窗口状态、setWindowModality设置窗口模态、setWindowOpacity设置窗口透明度。
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口的机制原理概述
本文深入探讨Windows系统中
一个
应用程序
窗口
嵌入
另
一个
应用程序
主窗口的核心机制,涵盖窗口父子关系、SetParent API、跨进程消息传递、COM/OLE支持及DWM合成技术。重点分析消息循环协作、输入焦点管理与安全性限制,揭示为何被
嵌入
应用仍可正常运作。
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口核心机制简述
本文深入探讨Windows系统中
应用程序
窗口
嵌入
的核心机制,重点分析窗口父子关系、SetParent API、跨进程消息传递及DWM合成技术。通过Office和Visual Studio等实例,揭示OLE、ActiveX、COM服务器在
嵌入
中的作用,并讨论安全性与焦点管理等关键问题。
ActiveX/COM/DCOM
703
社区成员
3,001
社区内容
发帖
与我相关
我的任务
ActiveX/COM/DCOM
C++ Builder ActiveX/COM/DCOM
复制链接
扫一扫
分享
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章