Google Chrome: błąd „Zawsze na wierzchu”

15

Przepraszam za niejasny tytuł, ale ten jest trudny do wyjaśnienia, więc proszę o wyrozumiałość.

Korzystam z systemu Windows Vista w pracy do tworzenia stron internetowych i czasami, gdy kliknę lub Alt-Tab do okna w tle, okno zostanie aktywowane, ale nie zostanie przeniesione na pierwszy plan.

Aby przesunąć okno na przód, muszę kliknąć granicę aplikacji (gdy pojawi się kursor zmiany rozmiaru), a następnie okno przeskoczy na przód.

Mam ten problem od około roku i zdarza się to co najmniej kilkanaście razy dziennie, ale nie dzieje się tak przez cały czas - wydaje się losowy.

Mam nadzieję, że wyjaśniłem problem w pełni (i dobrze to zrozumiałeś) i docenię wszelkie konstruktywne odpowiedzi lub komentarze, aby rozwiązać ten problem.

Przykład: jeśli I Alt-Tab z Google Chrome do Notatnika i ten problem pojawi się losowo, Google Chrome pozostanie przed Notatnikiem, ale będę mógł pisać tekst w Notatniku, gdy okno jest za Google Chrome. Kliknięcie obszaru zawartości Notatnika nie spowoduje przeniesienia go do przodu, ale kliknięcie jego obramowania okna tak.

Exampe wideo

http://vimeo.com/19388998

W tym filmie kliknąłem z Google Chome na UltraEdit i chrome pozostałem czcionką, ale jak widać, nadal mogę pisać w UltraEdit.

Zaczynam wierzyć, że to może być błąd w Google Chrome, więc będę nadal obserwować, czy to między innymi aplikacjami.

GateKiller
źródło
Czy możesz ustawić komputer na niższą rozdzielczość (HD 720p lub mniejszą) i przesłać wideo pokazujące problem za pomocą Jing . Co więcej, spróbuj wyłączyć aplikacje, które automatycznie uruchamiają się z Autoruns i ShellExView, aby zobaczyć, czy bezczynny program lub rozszerzenie eksploratora powoduje takie zachowanie, uważaj jednak, co wyłączasz ...
Tamara Wijsman
Czy to się dzieje, gdy masz otwartą z przodu określoną aplikację i próbujesz z niej nacisnąć klawisz Alt? Może się zdarzyć, że okno to zawsze będzie na wierzchu. Przez pewien czas miałem ten problem, kiedy moje okno mIRC było zawsze ustawione na wierzchu.
Windos
Ten problem również występuje (w systemie Windows 7). Chociaż nie do końca znam naturę problemu, myślę, że dzieje się tak, gdy mam otwartą przeglądarkę internetową i na jednej z otwartych stron internetowych jest zawartość flash. Powiedziawszy to, nie mogę tego powtórzyć.
happy_soil
Teraz, gdy o tym myślę, uruchomiłem w tle niektóre programy ustawione jako „Zawsze na wierzchu”, więc myślę, że może to zakłócać ustawianie ostrości w oknie.
happy_soil 31.01.11
@happy_soil: Możesz postawić to jako odpowiedź. Działające okno „Zawsze na wierzchu” jest dobrym wytłumaczeniem tego zachowania.
harrymc

Odpowiedzi:

6

W przypadku Chrome jest to znany problem: okno Chrome zawsze działa na wierzchu

Szybkim rozwiązaniem tego problemu jest wybranie okna Chrome i dwukrotne naciśnięcie F11.

harrymc
źródło
Dzięki za link ten błąd, jednak nie o to chodzi. Mój problem dotyczy okien aplikacji, a nie paska zadań. Na tym etapie nie mogę potwierdzić, czy przyczyną problemu jest Chrome.
GateKiller 31.01.11
Przepraszam, jeśli ten poprzedni komentarz brzmiał niegrzecznie. To nie był mój zamiar. Doceniam twój wkład :)
GateKiller 31.01.11
Ten błąd najwyraźniej wpływa zarówno na Alt-Tab, jak i na pasek zadań. Początkowy raport o błędzie dotyczył paska zadań, ale komentarz 41 również zauważył jego wpływ na Alt-Tab. (a twój komentarz wcale nie brzmiał niegrzecznie.)
harrymc 31.01.11
Po dalszych lekturach i testach zgadzam się, że problem z Google Chrome dla Windows. Dodałem obejścia do Twojej odpowiedzi, czekając, aż Google naprawi problem.
GateKiller
1
Korzystam z systemu Windows 10. Ten problem nadal występuje, a F11 dwa razy również nie działa.
Rosdi
4

Jak to wygląda?

Jest tylko jedno zachowanie zbliżone do tego problemu i byłoby to zachowanie Zawsze na wierzchu.
Jakiś fragment kodu, być może z samego programu, może zmieniać właściwość okna ...

W jaki sposób okno ma być „Zawsze na wierzchu”?

Jak utworzyć formularz, który zawsze pozostaje na wierzchu ,pokazuje nam, że SetWindowPos jest wywoływany z drugim parametrem ustawionym na HWND_TOPMOST , co natychmiast umieszcza go na wierzchu i utrzymuje go w ten sposób.

Po szybkim Google wynik ten ujawnia, że User32.dll jest właścicielem tej funkcji.

Kto ustawia moje okno „Zawsze na wierzchu”?

Teraz, gdy wiemy, jak się nazywa funkcja, będziemy chcieli wiedzieć, kiedy ta funkcja jest wywoływana. Będzie to wymagało od nas śledzenia śladów stosu i ich analizy, podczas gdy Windows Performance Toolkit może to zrobić, możemy być bardzo szczęśliwi, że Rohitab Batra napisał niesamowity monitor Api .

Przepraszamy, ale to ciężka praca domowa:

  • Pobierz API Monitor i zainstaluj go.
  • Otwórz API Monitor jako administrator , jeśli masz 64-bit, musisz to zrobić dwa razy.
  • Upewnij się, że nic nie jest zaznaczone w API Capture Filter po lewej stronie.
  • W tym samym miejscu zmień Wszystkie moduły u góry tego okna dialogowego na User32.dll .
  • Iść do

    Windows Application UI Development > Windows and Messages > Windows
    

    i wtedy

    User32.dll > SetWindowPos
    

Teraz będziesz chciał przechwycić niektóre procesy. Uwaga: Sortuj według PID i nie podłączaj się do winlogon.exeniczego, co ma niższy PID niż to, jeśli to zrobisz, zawiesisz się lub zawiesisz system. Możesz doświadczyć tego zachowania również w przypadku innych procesów, ale to trochę jak próba prób i błędów, aby sprawdzić, które z nich można podłączyć. Więc:

  • Sortuj według PID i podpinaj wszystko, co jest nowsze niż winlogon.exe.
  • Jeśli wszystko pójdzie dobrze, możesz przejrzeć wątki w oknie dialogowym Proces przechwycony .
  • Poszukaj wywołania interfejsu API, które wygląda następująco:

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

Połączenie z SetWindowPos z HWND_BOTTOM | 0x00000000fffffffe ( -2 + 1 = -1 = HWND_TOPMOST ) jest tym, czego szukamy, a proces, który wykonuje to wywołanie, jest tym, którego powinieneś winić za swój problem.

Poddaję się ... Jak mogę rozwiązać problem „Zawsze na wierzchu”?

Walcz z ogniem, ustawimy wszystkie okna na HWND_NOTOPMOST .

Yikes, programowanie! Ale można to łatwo zrobić za pomocą skryptów ...

Więc bardzo proste zadanie domowe:

  • Pobierz AutoIt v3 .

  • Utwórz plik ByeByeTopMost.au3 , który zawiera:

    While 1
        $var = WinList()
    
        For $i = 1 to $var[0][0]
            WinSetOnTop($var[$i][1], "", 0)
        Next
    
        Sleep(5000)
    WEnd
    
  • Umieść go w folderze startowym i uruchom lub uruchom ponownie.

Lub jeśli w ogóle nie lubisz pracy domowej, pobierz ten skompresowany plik zip .

Baw się dobrze... :-)

PS: W tym ostatnim przypadku nie można użyć funkcji „Zawsze na wierzchu”. Rozwiązywanie problemów lub obejście ... ;-)

Tamara Wijsman
źródło
Podoba mi się ta odpowiedź.
Supercereal 31.01.11
SetWindowPos nie uruchamia się, gdy pojawia się problem ... Uważam również za bardzo obraźliwe, że całkowicie zmieniasz nazwę pytania, a następnie piszesz na nie odpowiedź.
GateKiller
1
@GateKiller: Jak to jest obraźliwe? Pomaga ci uzyskać lepsze odpowiedzi. Jest to również dokładniejszy opis problemu (ponieważ „okna z przodu” są powszechnie znane jako „zawsze na wierzchu”), a po otrzymaniu odpowiedzi zmieniłeś tytuł na Google Chrome . W każdym razie zawsze możesz cofnąć i cieszę się, że problem został rozwiązany, ponadto SetWindowPos uruchomi się przed wystąpieniem problemu lub inną podobną procedurę o takim samym działaniu można nazwać ... :-)
Tamara Wijsman,
4

Aby to wyłączyć, musisz nacisnąć

ALT + Spacja + C

alt+ space+c

Po naciśnięciu tych przycisków przeglądarka Google Chrome zamknie się automatycznie. Następnie uruchom ponownie przeglądarkę Google Chrome.

Problem zostanie rozwiązany na zawsze :)

Firefog
źródło
ALT + Space + C zamknął moją przeglądarkę i naprawił problem. Musiałem tu wrócić, aby głosować na twoją odpowiedź.
Oscar Fraxedas
1
To jedyna rzecz, która rozwiązała mój problem.
ddonche,
1

Masz też ten problem i znajdź sposób na obejście go. Zainstalowałem oprogramowanie „Always on Top” .

I używam go w Chrome dla Windows, który zmienił stan właściwości alwaysontop.

Jaime Alves
źródło
0

Jednym szybkim rozwiązaniem jest dwukrotne kliknięcie przycisku „pokaż pulpit” po prawej stronie paska zadań w systemie Windows 7/8 / 8.1

Vnay
źródło
1
Jak napisano, twoja odpowiedź zawiera bardzo mało przydatnych informacji. Czy możesz to trochę rozwinąć?
bwDraco
0

Miałem ten sam problem i udało mi się go rozwiązać, przechodząc do „Przełącz użytkownika” w menu Start i po ponownym zalogowaniu się w systemie ponownie przestrzegałem paska narzędzi. Wydawało się, że wpływa to na wszystkie okna i chociaż chrom może być przyczyną, zdecydowanie zdaje się wpływać na cały system Windows, sugerując potencjalnego winowajcę z samego systemu Windows. Opublikowanie tego postu po moim pierwszym uruchomieniu z problemem po 5 latach korzystania z Chrome na Windows XP i 7.

Leviscus Tempris
źródło
0

Cóż, miałem ten sam problem, a podwójne stuknięcie F11 niczego nie rozwiązało. Ale widziałem, ponieważ miałem dwa otwarte okna Google Chrome, że tylko jedno z nich znajdowało się nad każdym innym oknem, które miałem (Steam, Notatnik itp.). Następnie wziąłem jedną z zawsze na górze kart i utworzyłem z niej nowe okno, a następnie przeniosłem każdą inną kartę z górnego okna do nowego. Teraz każde okno pojawia się na górze, gdy je wybieram, jak zwykle.

Mam nadzieję, że to może pomóc :)

Heltsuki
źródło
-3

Otwórz Chrome i naciśnij ALT + Spacja + C

Gustavo
źródło
3
OP nie pyta, jak zamknąć okno Chrome.
Anthony Geoghegan