сделать окно WPF поверх окна внешнего приложения, но не сверху каждого окна - PullRequest
2 голосов
/ 23 марта 2019

Мне нужно расширить внешнее приложение Windows с помощью фальшивой панели инструментов. Я вообще не могу изменить это внешнее приложение.

Моё поддельное приложение на панели инструментов - это приложение WPF с WPF MainWindow, C #.

Эта панель инструментов должна отображаться в верхней части окна внешнего приложения, но не как верхняя часть всей системы.

Я могу получить внешнее окно приложения HWND, размер, прямоугольник и т. Д. С помощью соответствующих функций Win32 API или с помощью WindowInteropHelper.

Возможно, я смогу скрыть окно своего приложения, если оно не отображается на 100% WindowFromPoint вызовом Win32 API, но это не лучшая идея.

Есть идеи, как мне это решить?

Я пытался использовать SetWindowPos функцию WIN32 API, но безуспешно.

SetWindowPos(myapp_hwnd, externalapp_hwnd, 0, 0, 0, 0, 0x0002);

Решение состоит в том, чтобы позвонить SetWindowPos дважды, как указано здесь: Как сохранить окно перед окном другого приложения

SetWindowPos(myapp_hwnd, 0, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);

SetWindowPos(myapp_hwnd, GetNextWindow(extapp_hwnd, GW_HWNDPREV), 0, 0, 0, 0, 
             SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...