如何调用外部应用程序?

guestmeimei 2005-05-12 10:22:37
我想实现的是,我的应用程序ex1.exe调用另一个应用程序ex2.exe,并能够把ex2.exe显示在我的子窗口中(SID 的view中),这两个应用程序需要满足什么条件?需要用到什么技术,能不能说的详细一点。
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CPUIV 2005-05-13
  • 打赏
  • 举报
回复
你不能照搬,必须根据自己的情况修改:

1 FindWindow() 函数参数,应该换成Client.exe 窗口的类名或窗口标题。
2 ex2 与 ex1 的同步问题。SetParent()函数必须在ex2 的窗口建立以后执行(建议采用ex1延迟1
秒后再执行SetParent)。
3 ex1 的窗口必须是非模式窗体。
guestmeimei 2005-05-13
  • 打赏
  • 举报
回复
CPUIV() 非常感谢你!我还想问一下,对于ex2.exe有什么要求吗?我调用自己写的一个ex2程序,但是不好用。
代码如下:
SetWindowLong(m_pViewContainer->m_hWnd, GWL_STYLE, GetWindowLong(m_pViewContainer->m_hWnd, GWL_STYLE)|WS_CLIPCHILDREN);
HINSTANCE hp = ShellExecute(NULL, "open",
"E:\Client.exe", NULL, "", SW_MAXIMIZE);
CWnd *pWnd = NULL;

while(1) //一直到写字板窗体被建立
{
pWnd=CWnd::FindWindow("Notepad",NULL);
if (pWnd) break;
}
pWnd->SetParent(m_pViewContainer);
guestmeimei 2005-05-13
  • 打赏
  • 举报
回复
我试了,但是ex2并没有嵌入ex1中啊?ex2我做的是一个单文档的exe。不好意思,问了你这么多,感谢您了!
CPUIV 2005-05-12
  • 打赏
  • 举报
回复
条件是:ex2有自己的显示窗口并且有不被父窗口的特性,不能使用VB编程。
方法:ex1加载ex2,然后检索ex2的窗口句柄。再设置ex2窗口的父窗口,即ex1的窗口。
Featured 2005-05-12
  • 打赏
  • 举报
回复
你是说ex2的窗体在view内部吗?
可以
CPUIV 2005-05-12
  • 打赏
  • 举报
回复
下面是一个例子,把写字板放到框架窗口。 你先建立一个单文档工程 myprj,然后编辑 BOOL CMyprjApp::InitInstance() 函数。

找到下面两行:
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

在其后键入下面的代码:

SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, GetWindowLong(m_pMainWnd->m_hWnd,GWL_STYLE)|WS_CLIPCHILDREN);
HINSTANCE hp=ShellExecute(NULL,NULL,"notepad",NULL,"",SW_SHOWNORMAL);
CWnd *pWnd=NULL;
while(1) //一直到写字板窗体被建立
{
pWnd=CWnd::FindWindow("Notepad",NULL);
if (pWnd) break;
}
pWnd->SetParent(m_pMainWnd);

编译即可运行
guestmeimei 2005-05-12
  • 打赏
  • 举报
回复
我的意思就是想把另一个外部程序嵌入到ex1.exe。
CPUIV(),能不能说的详细一点。我使用的工具是vc、mfc。什么叫“不被父窗口的特性”?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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