读书人

怎么在窗体中嵌入一个被调用的exe文件

发布时间: 2012-02-05 12:07:14 作者: rapoo

如何在窗体中嵌入一个被调用的exe文件?小妹急求~谢谢! - C++ Builder / Windows SDK/API
是这样的,我想在form的一个panel里显示一个外部的exe,我目前只能用ShellExecute方法调用外部exe文件,是在一个新窗口打开的,我想在我自己程序的窗体上显示打开,而不是在新的窗口打开,有什么办法可以解决么?先谢过了~


其中我找到一段代码 是用c#写的,我不会c#,他写的很复杂,小妹实在看不太懂,不知道这个方法在BCB中怎么用,贴出来给大家看下
http://www.cnblogs.com/jdmei520/archive/2009/06/05/1497124.html

[解决办法]

Delphi(Pascal) code
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;
[解决办法]
C/C++ code
  HWND hwnd,chwnd;  hwnd=this->Panel1->Handle;  ShellExecute(hwnd, "open", "calc.exe" ,"", "C:\WINDOWS\system32", SW_HIDE );  Sleep(100);  chwnd=::FindWindow("SciCalc","计算器");  if(chwnd!=NULL)  {     ::SetParent(chwnd,hwnd);     ::MoveWindow(chwnd,0,0,Panel1->Width,Panel1->Height,true);  }
[解决办法]
可以用Visual studio里的spy++来监听窗口的各种信息。
做法是:
1、打开被查看窗口
2、运行spy++
3、点FindWindow
4、拖动FindWindow中间的图标到你的窗口上
5、spy++里就显示你要的结果了

读书人网 >C++ Builder

热点推荐