У меня есть приложение WPF, которое иногда запускает старые окна VB6. Эти окна VB6 скомпилированы как DLL ActiveX и запускаются «модально» из основного приложения WPF. Когда основное приложение WPF запускает окно VB6, окно VB6 передает Me.Hwnd обратно в основное приложение WPF, которое использует ITaskbarList для отображения значка на панели задач Windows. Код, аналогичный приведенному ниже, работал в течение многих лет («значение» в конечном счете - Me.Hwnd из приложения VB6).ITaskbar Метод HrInit генерирует исключение в RemoteApp
private ITaskbarList _taskbar;
_taskbar = (ITaskbarList)new CoTaskbarList();
_taskbar.HrInit();
_taskbar.AddTab((IntPtr)value);
Мой клиент теперь работает приложение с помощью RemoteApp и метод HrInit бросает исключение (HRESULT -2146233088/0x80131500).
Поддерживается ли поддержка ITaskbarList в RemoteApp? Есть ли лучший подход к доступу к панели задач, когда приложение работает под RemoteApp?
«Основное приложение» - это приложение WPF. Он развертывается клиентом через RemoteApp. Пользователь выбирает элемент ленты, и приложение запускает форму VB6 ActiveX. Поскольку пользователь может перемещаться между этой формой VB6 и исходным окном (или даже запускать другие окна), мы хотим, чтобы главное окно и окно VB6 отображалось на панели задач - например, если окно VB6 позади в главном окне пользователь может перенести его, нажав на панель задач. Спасибо за ваш ответ. – DFG
Я думаю, что @cdavid прав, я не смог получить доступ к панели задач. Вместо этого мой код использует это выражение: Boolean isRemoteApp = System.Windows.Forms.SystemInformation.TerminalServerSession; , чтобы определить, запускается ли он с RemoteApp. Если это так, то он не пытается контролировать панель задач. Не идеально, но работает нормально для моей ситуации. – DFG