Есть ли способ гарантировать, что Internet Explorer всегда будет самым верхним окном? - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь заставить окно Internet Explorer быть TOPMOST.Никакие другие окна не должны отображаться поверх окна Internet Explorer.Я должен использовать Internet Explorer.Я также запускаю это в Windows 7. Очевидно, что это имеет значение, но вся информация, которую я нашел, довольно расплывчата и в основном состоит из людей, кричащих «почему это не так просто!».Это мой код:

HWND ieWin = FindWindow(TEXT("IEFrame"), 0);
SetFocus(ieWin);
SetWindowPos(ieWin, HWND_TOPMOST, 0, 0, 100, 100, SWP_SHOWWINDOW );
UpdateWindow(GetParent(ieWin));

Это работает в цикле, поэтому я могу заставить окно постоянно иметь эти настройки, но это не помогает.Иногда приведенный выше код работает, а иногда нет.

Ответы [ 2 ]

3 голосов
/ 09 марта 2012
0 голосов
/ 16 марта 2012

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

1) Убедитесь, что они будут иметь абсолютный контроль над окнами, которые может открыть их пользователь. В моем случае пользователь сможет открыть только мою программу и интернет-проводник.

2) Когда вы в первый раз устанавливаете окно IE, чтобы установить его на передний план.

3) Во время цикла для установки окна в TOP_MOST НЕ устанавливайте фокус на окне IE.

4) Убедитесь, что у вас есть SWP_SHOWWINDOW, SWP_NOSIZE и SWP_NOMOVE. В противном случае этот цикл будет изменять размер и место вашего окна на каждой итерации.

И если вы можете избежать этого вообще, никогда не делайте этого вообще: P

...