Сделать окно верхним, используя дескриптор окна
После запуска приложения с использованием класса Process я бы хотел сделать это окно самым верхним. В настоящее время мое приложение является самым верхним окном, поэтому при запуске другого приложения оно не отображается. Одна вещь, которая пришла мне в голову, это то, что я мог установить topmost = false для своего приложения перед запуском процесса, проблема в том, что я хочу дать процессу достаточно времени для загрузки, прежде чем отобразить его пользователю, поэтому я бы хотел больше контроля, когда я переключаю другое приложение на самое верхнее.
1 ответ
Решение
Вам нужно использовать P/Invoke с SetWindowPos, чтобы принять это:
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
const UInt32 SWP_SHOWWINDOW = 0x0040;
// Call this way:
SetWindowPos(theWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);