Метод ITaskbar HrInit генерирует исключение под RemoteApp

У меня есть приложение WPF, которое иногда запускает устаревшие окна VB6. Эти окна VB6 скомпилированы как библиотеки ActiveX и запускаются "модально" из основного приложения WPF. Когда основное приложение WPF запускает окно VB6, окно VB6 передает Me.Hwnd обратно в основное приложение WPF, которое использует ITaskbarList для отображения значка на панели задач Windows. Код, подобный приведенному ниже, работал годами (в конечном итоге "ценность" - это Me.Hwnd из приложения VB6).

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

Мой клиент теперь запускает приложение через RemoteApp, а метод HrInit вызывает исключение (HResult -2146233088 / 0x80131500).

Поддерживается ли функциональность ITaskbarList в RemoteApp? Есть ли лучший подход для доступа к панели задач, когда приложение работает под RemoteApp?

1 ответ

Решение

Это связано с тем, что RemoteApp не запускает dwm / explorer.exe как оболочку, а запускает собственную оболочку (rdpshell.exe). Запустив dwm / explorer в качестве оболочки, вы извлекаете весь рабочий стол (поэтому вы в основном запускаете Remote Desktop, а не RemoteApp).

Поэтому утилиты, специфичные для DWM/explorer.exe, не работают в RemoteApp (поскольку нет хостинговой оболочки и панели задач и т. Д.).

Чего ты пытаешься достичь? Должно ли RemoteApp (приложение VB6) запускать другое приложение или чего вы пытаетесь достичь? Может быть, мы сможем исправить это.

Другие вопросы по тегам