Google Chrome: всегда на вершине ошибки

15

Извините за смутное название, но это трудно объяснить, поэтому терпите меня, пожалуйста.

Я использую Windows Vista на работе для веб-разработки, и иногда, когда я нажимаю или нажимаю Alt-Tab в фоновом окне, окно фокусируется, но не выводится на передний план.

Чтобы вывести окно на передний план, я должен нажать на границу приложений (когда появится курсор изменения размера), и окно затем переместится на передний план.

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

Я надеюсь, что я полностью объяснил проблему (и вы ее поняли) и был бы признателен за любые конструктивные ответы или комментарии для решения этой проблемы.

Пример: если я переберу Alt-Tab из Google Chrome в Блокнот и эта проблема возникнет случайно, Google Chrome останется перед Блокнотом, однако я смогу печатать текст в Блокноте, пока окно находится за Google Chrome. Нажатие на область содержимого Блокнота не выведет его на передний план, а щелчок на границе окна.

Видеоэкзамен

http://vimeo.com/19388998

В этом видео я переключился с Google Chome на UltraEdit, и хром остался в шрифте, но, как вы можете видеть, я все еще могу ввести UltraEdit.

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

GateKiller
источник
Не могли бы вы установить для вашего компьютера более низкое разрешение (HD 720p или меньше) и загрузить видео, которое показывает проблему, используя Jing . Кроме того, попробуйте отключить приложения, которые автоматически запускаются с Autoruns и ShellExView, чтобы увидеть, не вызывает ли это поведение неработающая программа или расширение
обозревателя, однако обратите
Это происходит, когда перед вами открыто определенное приложение и вы пытаетесь изменить вкладку? Это может быть случай, когда это окно установлено всегда сверху. У меня была эта проблема в течение некоторого времени, когда мое окно mIRC было установлено, чтобы всегда быть сверху.
Виндос
Я тоже сталкиваюсь с этой проблемой (использую Windows 7). Хотя я точно не знаю природу проблемы, я думаю, что это происходит, когда у меня открыт веб-браузер и на одном из открытых мной веб-сайтов есть флэш-контент. Сказав это, хотя, я не могу воспроизвести это.
happy_soil
Теперь, когда я думаю об этом, у меня есть некоторые программы, работающие в фоновом режиме, которые установлены как «Всегда сверху», поэтому я думаю, что это может помешать фокусировке окна.
happy_soil
@happy_soil: Вы могли бы поставить это как ответ. Работающее окно «Всегда сверху» является хорошим объяснением этого поведения.
harrymc

Ответы:

6

В случае Chrome это известная проблема: поведение окна Chrome всегда сверху

Быстрое решение этой проблемы - выбрать Chrome Window и дважды нажать F11.

harrymc
источник
Спасибо за ссылку на эту ошибку, однако, это не проблема, которую я имею. Моя проблема связана с окнами приложения, а не с панелью задач. Я не могу подтвердить на этом этапе, является ли Chrome причиной этой проблемы или нет.
GateKiller
Извините, если предыдущий комментарий звучал грубо. Это не было моим намерением. Я ценю ваш вклад :)
GateKiller
Эта ошибка, очевидно, затрагивает как alt-tab, так и панель задач. Первоначальный отчет об ошибке был для панели задач, но комментарий 41 также отметил его влияние на alt-tab. (и ваш комментарий совсем не звучал грубо.)
harrymc
После дальнейшего чтения и тестирования я согласен, что Google Chrome для Windows действительно является проблемой. Я добавил обходные пути в ваш ответ, пока мы ждем, пока Google исправит проблему.
GateKiller
1
Я на Windows 10. Эта проблема все еще существует, и F11 дважды не работает либо.
Росди
4

На что это похоже?

Существует только одно поведение, близкое к этой проблеме, и это будет поведение « Всегда сверху» .
Какой-то фрагмент кода, возможно, из самой программы, может изменять свойство вашего окна ...

Как установить окно «Всегда сверху»?

Как создать форму, которая всегда остается сверху, показывает нам, что SetWindowPos вызывается со вторым параметром, установленным в HWND_TOPMOST , это немедленно помещает его сверху и сохраняет его таким образом.

После быстрого поиска Google этот результат показывает, что User32.dll является владельцем этой функции.

Кто устанавливает мое окно «Всегда сверху»?

Теперь, когда мы знаем, какая функция вызывается, мы захотим узнать, когда вызывается эта функция. Это потребует от нас создания трассировок стека и их анализа, в то время как Windows Performance Toolkit может это сделать, мы можем быть очень рады, что Rohitab Batra написал потрясающий Api Monitor .

Извините, но это тяжелая домашняя работа:

  • Загрузите API Monitor и установите его.
  • Откройте API Monitor как администратор , если у вас 64-битная версия, вам нужно сделать это дважды.
  • Убедитесь, что ничего не проверено в API Capture Filter на левой стороне.
  • Там же измените Все модули в верхней части этого диалога на User32.dll .
  • Перейти к

    Windows Application UI Development > Windows and Messages > Windows
    

    а потом

    User32.dll > SetWindowPos
    

Теперь вам захочется подключить некоторые процессы. Слово предостережения: сортируйте по PID и не подключайтесь к winlogon.exeчему-либо, имеющему более низкий PID, чем это, если вы это сделаете, вы либо повесите, либо сломаете свою систему. Вы можете испытывать такое поведение и с другими процессами, но это похоже на метод проб и ошибок, чтобы увидеть, какие из них вы можете подключить. Так:

  • Сортировать по PID, и подключить все, что новее, чем winlogon.exe.
  • Если все идет хорошо, вы можете просмотреть темы в диалоге Hooked Process .
  • Посмотрите на вызов API, который выглядит следующим образом:

    SetWindowPos (0x000000000002043c, HWND_BOTTOM | 0x00000000fffffffe , 0, 0, 0, 0,
    SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE)

Вызов SetWindowPos с HWND_BOTTOM | 0x00000000fffffffe ( -2 + 1 = -1 = HWND_TOPMOST ) - это то, к чему мы стремимся, и процесс, который выполняет этот вызов, - это тот, который вы должны винить в своей проблеме.

Я сдаюсь ... Как я могу решить мою проблему "Всегда сверху"?

Боевой огонь с огнем, мы собираемся установить все окна в HWND_NOTOPMOST .

Yikes, программирование! Но это также легко сделать с помощью сценариев ...

Итак, очень простая домашняя работа:

  • Загрузите AutoIt v3 .

  • Создайте файл ByeByeTopMost.au3, который содержит:

    While 1
        $var = WinList()
    
        For $i = 1 to $var[0][0]
            WinSetOnTop($var[$i][1], "", 0)
        Next
    
        Sleep(5000)
    WEnd
    
  • Поместите его в папку запуска и запустите или перезагрузите компьютер.

Или, если вам совсем не нравится домашнее задание, скачайте этот zip-файл, который я сделал.

Веселиться... :-)

PS: Вы не можете использовать функцию «Всегда сверху» в этом последнем случае. Или устранение неполадок или обходной путь ... ;-)

Тамара Вийсман
источник
Мне нравится этот ответ.
Supercereal
SetWindowPos не срабатывает при возникновении проблемы ... Мне также очень обидно, что вы переименовываете вопрос полностью, а затем пишете для него ответ.
GateKiller
1
@GateKiller: Как это оскорбительно? Это поможет вам получить лучшие ответы. Это также более точное описание вашей проблемы (так как «окна впереди» обычно называют «всегда сверху»), и теперь вы изменили название на Google Chrome после получения ответов . В любом случае, вы всегда можете выполнить откат, и я рад, что ваша проблема решена, более того, SetWindowPos сработает до того, как возникнет проблема, или может быть вызвана другая подобная процедура с таким же эффектом ... :-)
Тамара Вийсман,
4

Чтобы отключить это, вы должны нажать

ALT + Пробел + C

alt+ space+c

После нажатия этих кнопок браузер Google Chrome закроется автоматически. Затем снова запустите браузер Google Chrome.

Проблема будет решена навсегда :)

Firefog
источник
ALT + Space + C закрыл мой браузер и исправил проблему. Я должен был вернуться сюда, чтобы подтвердить ваш ответ.
Оскар Фракседас
1
Это единственное, что решило мою проблему.
ддонче
0

Одним из быстрых решений является двойное нажатие на кнопку «Показать рабочий стол» в правой части панели задач в Windows 7/8 / 8.1.

Vnay
источник
1
Как написано, ваш ответ дает очень мало полезной информации. Можете ли вы расширить это немного?
bwDraco
0

У меня была такая же проблема, и мне удалось ее исправить, зайдя в «Пуск» в меню «Пуск», и после входа в Windows снова уважал панель инструментов. Казалось, что это влияет на все окна, и хотя хром может быть причиной, он определенно влияет на всю систему Windows, предполагая возможного виновника из самой Windows. Создание этого поста после моей первой попытки решить эту проблему после пяти лет работы с Chrome в Windows XP и 7.

Левискус Темприс
источник
0

Ну, у меня была та же проблема, и двойное нажатие F11 ничего не решило. Но я видел, так как у меня было открыто два окна Google Chrome, что только одно из них было поверх всех остальных окон (Steam, Notepad и т. Д.). Затем я взял одну из всегда верхних вкладок и создал с ней новое окно, а затем перенес все остальные вкладки из верхнего окна в новое. Теперь каждое окно появляется сверху, когда я выбираю его, как обычно.

Надеюсь, что это может помочь :)

Heltsuki
источник
-3

Откройте Chrome и нажмите ALT + Пробел + C

Gustavo
источник
3
ОП не спрашивает, как закрыть окно Chrome.
Энтони Геогеган