1

我有一个 WPF 应用程序,有时会启动旧版 VB6 窗口。这些 VB6 窗口被编译为 ActiveX DLL,并从主 WPF 应用程序“模态”启动。当 WPF 主应用程序启动 VB6 窗口时,VB6 窗口将 Me.Hwnd 传递回 WPF 主应用程序,后者使用 ITaskbarList 在 Windows 任务栏上显示一个图标。类似于下面的代码已经工作了多年(“价值”最终是来自 VB6 应用程序的 Me.Hwnd)。

private ITaskbarList _taskbar;
_taskbar = (ITaskbarList)new CoTaskbarList();
_taskbar.HrInit();
_taskbar.AddTab((IntPtr)value);

我的客户端现在通过 RemoteApp 运行应用程序,并且 HrInit 方法抛出异常(HResult -2146233088 / 0x80131500)。

RemoteApp 是否支持 ITaskbarList 功能?当应用程序在 RemoteApp 下运行时,是否有更好的方法来访问任务栏?

4

1 回答 1

0

这是因为 RemoteApp 不将 dwm/explorer.exe 作为 shell 运行,而是运行自己的 shell (rdpshell.exe)。通过将 dwm/explorer 作为 shell 运行,您可以拉入整个桌面(因此您基本上运行的是远程桌面而不是 RemoteApp)。

因此,特定于 DWM/explorer.exe 的实用程序无法在 RemoteApp 下运行(因为没有托管 shell,也没有任务栏等)。

你想达到什么目的?RemoteApp(VB6 应用程序)是否应该启动另一个应用程序或者您想要实现什么?也许我们可以努力解决这个问题。

于 2016-02-03T20:39:02.627 回答