2015-11-25 2 views
1

У меня есть приложение формы, я хочу, чтобы он был самым большим. Я используюверхнее большинство окна в C#

SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS); 

эта функция работает нормально. И диспетчер задач будет отображаться как самое верхнее окно. Так что моя забота о том, есть ли способ ее достижения, или мы не можем делать это с диспетчером задач. он всегда будет отображаться сверху, или что-то еще, что мне не хватает, или что-то не так.

+0

Taskmanager представляет собой программное обеспечение, которое должно работать всегда, даже если какой-то тупой (я не говорю, что ты тупой!) Программируете думаю, что это будет отличная идея, чтобы покрыть весь экран с не закрываемой верхний заявление. Затем пользователь все равно может вызвать диспетчер задач и убить эту программу. Это одна из важнейших задач для диспетчера задач и не должна работать. – Mischa

+0

Смотри, моя забота - это не только диспетчер задач, но и другое программное обеспечение, подобное этому. –

+0

вы можете использовать таймер, затем установить интервал до 1000, а затем в timer.tick установить ваше приложение как Topmost –

ответ

2

MSDN говорит, что HWND_TOPMOST просто Places the window above all non-topmost windows. Другими словами, есть две группы окон: не верхняя (обычная) и самая верхняя, и вы просто отправили свое окно в другую группу.

Если в вашем случае есть любое другое самое верхнее окно (= диспетчер задач), вы можете переключаться между ними, как обычно, между не самыми верхними окнами, и они будут перекрываться в зависимости от того, какой из них активен в настоящий момент.

Если вы хотите, чтобы ваше окно всегда было самым высоким, я думаю, вам нужно будет следить за деактивацией окна (WM_ACTIVATE), а затем переместить окно в Z-порядке, а также сфокусировать свое окно назад - таким образом, вы предотвратили бы проблемы, такие как наличие вашего окна, единственное видимое, но сфокусированное внимание на другом окне.

0

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

private void timer1_Tick(object sender, EventArgs e) 
     { 
      this.TopMost = true; 
     } 
Смежные вопросы