社区
ActiveX/COM/DCOM
帖子详情
如何把一个应用程序嵌入到另外一个应用程序
shaohui
2006-12-14 07:00:08
我想把一个应用程序嵌入到另外一个应用程序.比如说,我想开发一个有多个tab的应用程序,而其中每一个tab标签运行一个已经开发好的应用程序,比如记事本.那么我就可以像FireFox那样打开一个窗口而有不同的tab,每个tab里面都运行一个记事本程序.另外还有一个问题就是,要在不修改被嵌入的应用程序,不知道有没有比较好的办法,是否是用ActiveX,谢谢.
...全文
1355
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
应用程序
第
一个
嵌入
式QT
应用程序
在成功安装 Qt Creator 开发环境后,我们通过
一个
简单的
嵌入
式Qt
应用程序
,来说明一下如何构建和编译
一个
Qt界面
应用程序
。 关于如何安装并构建 Qt Creator 开发环境,请参考以下帖子:
嵌入
式Linux开发环境搭建-(5)安装和配置Qt Creator开发工具 目标:了解 Qt Creator 如何构建和编译工程,如何把
应用程序
...
一个
应用程序
的窗口如何
嵌入
另
一个
应用程序
窗口中?
一个
应用程序
的窗口
嵌入
另
一个
应用程序
的窗口中。
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口的机制原理概述
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口的机制原理。
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口核心机制简述
windows
应用程序
中,
一个
应用程序
窗口中
嵌入
另
一个
应用程序
的主窗口核心机制。
在delphi的exe文件中
嵌入
另外
一个
exe文件
[Delphi]在delphi的exe文件中
嵌入
另外
一个
exe文件 原理: 把需要包含的exe放入到进资源文件中,和原来的程序一起编译成
一个
exe文件,在程序第一次运行时释放出这个exe,然后调用这个exe文件。 步骤: 1、创建rc文件。可以用任意文本编辑器来写。文件格式为:"资源名 资源类型 文件名"。 对于资源类型,如果是exe文件,应该是EXEFILE,如果是二进...
ActiveX/COM/DCOM
703
社区成员
3,001
社区内容
发帖
与我相关
我的任务
ActiveX/COM/DCOM
C++ Builder ActiveX/COM/DCOM
复制链接
扫一扫
分享
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章