这是最近在做的一个项目中提到的需求,把一个现有的窗体应用程序界面嵌入到自己开发的窗体中来,看 起来就像自己开发的一样(实际上……跟自己开发的还是有一点点区别的,就是内嵌程序和宿主程序的窗口激 活状态问题)。
在codeproject找到了一篇相关的文章 (http://www.codeproject.com/Articles/9123/Hosting-EXE-Applications-in-a-WinForm-project),虽然 可用,但是很不方便,于是重新设计编写了一个类库,用一个控件完成内嵌其它应用程序的功能。
直 接上图先:
从打开Adobe Reader那张图片可以看出来所谓的“内嵌程序和宿主程序的窗口激活状态问题”。当内嵌程序窗口激活时,表 面上将其包裹起来的宿主窗口却处于非激活的状态。想隐藏这一点的话,把窗口的FormBorderStyle属性设为 None吧,然后自己在窗口上画关闭、最大化、最小化按钮好了。
原作者的实现思路更能暴露本质,所 以这里用原作者的代码段解释一下实现过程。
1、启动要嵌入的应用程序进程
Process p = null; try { // Start the process p = System.Diagnostics.Process.Start(this.exeName); // Wait for process to be created and enter idle condition p.WaitForInputIdle(); // Get the main handle appWin = p.MainWindowHandle; } catch (Exception ex) { MessageBox.Show(this, ex.Message, "Error"); }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#窗体应用程序
, process.start()
, 程序
, 应用程序
, 窗体
, 嵌入窗口
, 激活
, 窗口
, winform 类库 外部exe
, c# winform窗体程序
, WINFORM宿主
一个
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。