Подтвердить что ты не робот

Сделайте верхнее окно с помощью оконной ручки

После запуска приложения с использованием класса Process я хотел бы сделать это окно самым верхним. В настоящее время мое приложение является самым верхним окном, поэтому, когда я запускаю другое приложение, оно не отображается. Одна вещь, которая приходила в голову, это то, что я могу установить topmost = false для своего приложения перед запуском процесса, проблема с этим - я хочу дать этому процессу достаточно времени для загрузки, прежде чем показывать его пользователю, поэтому я хотел бы больше контроля, когда я переключу другое приложение на самое верхнее.

4b9b3361

Ответ 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);