Сделать окно верхним, используя дескриптор окна

После запуска приложения с использованием класса 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);
Другие вопросы по тегам