将现有程序集成到新的 GUI
Posted
技术标签:
【中文标题】将现有程序集成到新的 GUI【英文标题】:Integrate an existing program into a new GUI 【发布时间】:2012-06-12 08:35:15 【问题描述】:我想将现有程序(例如:记事本、资源管理器等)集成到我要创建的新窗口中。目的是在 1 个窗口中有 2 个不同的程序。 你知道这是否可能吗? 如果是,我可以使用什么样的技术? (我可以在 windows 7/Visual 中使用 C++、C#) 谢谢。
【问题讨论】:
有一个类似的question。解决方案之一是this。希望这对您有所帮助。 我认为您已经可以在一个 Windows 中运行 2 个或更多不同的程序...哈哈,真有趣...不管怎样,请查看 this 和 this @musefan +1 获取第二个链接 您的第一个链接看起来不错,因为它可以处理资源管理器窗口,而您的第二个链接的项目不能。我会尝试理解它(也许很难!) How can I run another application within a panel of my C# program?的可能重复 【参考方案1】:如果您想添加外部程序,那么我建议您查看@987654321@
、@987654322@
和@987654323@
。理论是将您的窗口(或窗口中的控件)设置为另一个窗口/控件的父级。
【讨论】:
谢谢。我试过这个:codeproject.com/Articles/9123/… 很棒,它在记事本上运行良好,但问题是它不适用于 ieplorer 或资源管理器...... 我在 Windows 7 上工作,Internet Explorer 和 Explorer 没有处理到我的 GUI 中,它们像弹出窗口一样在新窗口中打开。 也许您可以尝试在隐藏窗口的情况下启动进程,并在创建相关窗口时使用EnumWindows
获取相关窗口。
我知道为什么它对 Explorer 不起作用。实际上,explorer.exe 已经启动了,所以当我再次启动它时,它只是打开一个新窗口,我无法获取该特定窗口的进程......通过使用 EnumWindow,我可以得到它,但我怎么能在所有打开的窗口中识别它??
我建议EnumWindows
以便您可以找到某个进程拥有的窗口。但在这种情况下,实际上并没有制造出一个新工艺,这不起作用。不幸的是,我不知道对此有一个不错的 解决方案...但是您可以尝试 将 DLL 注入进程并绕过CreateWindow
?或者,您甚至可以在再次运行它之前 找到(现有)进程拥有的所有窗口,然后在再次运行它之后,再次搜索这些窗口并获取具有被创建。但是如果用户自己打开浏览器,这个想法就有缺陷了。以上是关于将现有程序集成到新的 GUI的主要内容,如果未能解决你的问题,请参考以下文章
将程序集加载到新的应用程序域但不是 CurrentDomain
将datagridview中的数据集存储到新的访问数据库文件c#