【发布时间】:2013-07-26 20:56:35
【问题描述】:
我想创建 WPF 应用程序并在其上打开其他程序。例如记事本或上面的一些播放器。它类似于虚拟桌面,但仅用于在其上打开其他应用程序。 这对.NET 可行吗? 如何检测其他程序(附加程序)? 如何定义并附加到 wpf 窗口? WPF是否比Win更好。为此的表格? 或者可能是像 Qt 这样的其他技术?
【问题讨论】:
标签: .net wpf desktop-application desktop
我想创建 WPF 应用程序并在其上打开其他程序。例如记事本或上面的一些播放器。它类似于虚拟桌面,但仅用于在其上打开其他应用程序。 这对.NET 可行吗? 如何检测其他程序(附加程序)? 如何定义并附加到 wpf 窗口? WPF是否比Win更好。为此的表格? 或者可能是像 Qt 这样的其他技术?
【问题讨论】:
标签: .net wpf desktop-application desktop
三个步骤:
使用 Process 类获取要嵌套在 WPF 窗口中的应用程序的进程。
使用 WindowInteropHelper 类获取 WPF 窗口的句柄。
调用 Win32 函数 SetParent 以传递进程的 MainWindowHandle 属性和 WPF 窗口的 Handle 属性。
您需要使用 user32.dll...
【讨论】:
这种事情通常被称为“吞下窗口”,并且在某些窗口管理器(如 XTerm)上是可能的。但是,如果不制作一个全新的窗口管理器,我认为在 Windows 上是不可能的,这是一项艰巨的任务。
当然,一些应用程序通过 ActiveX 或 OLE 等嵌入技术公开其 GUI——例如,Excel 文档就是这样嵌入到 Word 文档中的。但是,应用程序必须专门设计为支持这一点,而绝大多数不支持。
【讨论】: