Google Chrome:始终存在的错误


15

抱歉,标题含糊,但这很难解释,所以请多多包涵。

我正在使用Windows Vista进行Web开发,有时当我单击或按住Alt-Tab进入后台窗口时,该窗口将获得焦点,但不会被置于最前面。

为了将窗口置于最前面,我必须单击应用程序边框(当出现调整大小的光标出现时),然后窗口将跳至最前面。

我已经有大约一年的时间了,这个问题每天至少发生十二次,但它并非一直如此-似乎是随机的。

我希望我已经完全解释了这个问题(您已经理解了),并且希望能有任何建设性的答案或意见来解决这个问题。

示例:如果我从Google Chrome浏览器到记事本的Alt-Tab键并且随机发生此问题,则Google Chrome浏览器将保留在记事本的前面,但是,当窗口在Google Chrome浏览器后面时,我将能够在记事本中键入文本。单击记事​​本的内容区域不会将其带到前面,但是单击它的窗口边框会显示。

影片示范

http://vimeo.com/19388998

在此视频中,我从Google Chome单击以单击UltraEdit,而chrome保持字体不变,但是如您所见,我仍然可以键入UltraEdit。

我开始相信这可能是Google Chrome中的错误,因此我将继续观察其他应用程序之间是否存在此问题。


您能否将计算机设置为较低的分辨率(HD 720p或更小),然后使用Jing上载显示问题的视频。此外,请尝试禁用以AutorunsShellExView自动启动的应用程序,以查看是否有闲置程序或资源管理器扩展引起此问题,请注意您禁用的内容...
Tamara Wijsman

当您在前面打开某个应用程序并尝试从中更改选项卡时,会发生这种情况吗?该窗口可能被设置为始终位于最上面。当我的mIRC窗口设置为始终位于顶部时,我遇到了一段时间。
Windos

我也遇到了这个问题(使用Windows 7)。尽管我不完全了解问题的本质,但我认为打开我的Web浏览器并且在我打开的一个网站上有Flash内容时都会发生。话虽这么说,我似乎无法复制它。
happy_soil 2011年

现在我想到了,我在后台运行了一些程序,这些程序被设置为“ Always on Top”,因此我认为这可能会干扰窗口聚焦。
happy_soil 2011年

@happy_soil:您可以将其作为答案。运行“始终在顶部”窗口可以很好地说明此行为。
harrymc

Answers:


6

对于Chrome,这是一个已知问题: Chrome窗口始终处于顶部状态

解决此问题的快速方法是选择Chrome窗口,然后按两次F11键。


感谢提供此错误的链接,但是,这不是我遇到的问题。我的问题与应用程序窗口有关,而不与任务栏有关。我目前无法确认是否是Chrome导致此问题。
GateKiller

抱歉,如果先前的评论听起来不礼貌。这不是我的意图。感谢您的
宝贵

该错误显然会影响alt-tab和任务栏。最初的错误报告是针对任务栏的,但注释41还指出了其对alt-tab的影响。(而且您的评论一点也不听起来很粗鲁。)
harrymc 2011年

经过进一步的阅读和测试后,我同意Google Chrome for Windows确实是问题所在。在我们等待Google解决此问题时,我已为您的答案添加了解决方法。
GateKiller

1
我在Windows 10上。此问题仍然存在,并且两次F11也不起作用。
Rosdi

4

它是什么样子的?

只有一种行为可以解决该问题,而这就是“ 永远在线”行为。
某些代码,也许来自程序本身,可能正在更改窗口的属性...

窗口如何设置为“始终在顶部”?

如何创建始终保持在顶部的表单向我们展示了 SetWindowPos是在第二个参数设置为 HWND_TOPMOST的情况下调用的,这立即将其置于顶部并保持这种状态。

快速浏览Google之后,此结果表明User32.dll是此函数的所有者。

谁将我的窗口设置为“始终位于顶部”?

现在我们已经知道了调用什么函数,我们将要知道何时调用该函数。这将需要我们进行堆栈跟踪并进行分析,而Windows Performance Toolkit可以做到这一点,我们对Rohitab Batra编写了很棒的Api Monitor感到非常高兴。

抱歉,但这是艰苦的作业:

  • 下载并安装API Monitor
  • 以管理员身份打开API Monitor ,如果您有64位,则需要执行两次。
  • 确保在左侧的“ API捕获过滤器”未检查任何内容
  • 在同一位置,将该对话框顶部的“ 所有模块”更改为User32.dll
  • Windows Application UI Development > Windows and Messages > Windows
    

    接着

    User32.dll > SetWindowPos
    

现在,您将要挂钩一些进程。温馨提示:按PID排序,不要挂接到winlogon.exePID或比其低的任何东西,如果这样做,则可能会挂起或崩溃系统。您可能还会在其他进程中遇到这种行为,但是这就像是反复试验,以了解可以挂接哪些进程。所以:

  • 按PID排序,并钩接所有比早的事物winlogon.exe
  • 如果一切顺利,则可以在“ 挂钩进程”对话框中浏览线程。
  • 查找如下所示的API调用:

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

调用到SetWindowPosHWND_BOTTOM | 0x00000000fffffffe-2 + 1 = -1 = HWND_TOPMOST)是我们所追求的,而执行此调用的过程是您应该为问题负责的过程。

我放弃了...我该如何解决“始终存在的问题”?

扑朔迷离,我们将所有窗口设置为HWND_NOTOPMOST

kes,编程!但是,这也可以通过脚本轻松完成...

所以一个非常简单的家庭作业:

  • 下载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会在问题发生之前触发,或者可以将具有相同效果的另一个类似过程称为... :-)
Tamara Wijsman

4

要禁用它,你必须打

ALT +空格键+ C

alt+ space+c

按下这些按钮后,Google chrome浏览器将自动关闭。然后再次启动Google chrome浏览器。

这个问题将永远得到解决:)


Alt + Space + C关闭了我的浏览器,并修复了该问题。我不得不回到这里来支持你的答案。
Oscar Fraxedas

1
这是解决我的问题的唯一方法。
ddonche '19


0

一种快速修复是在Windows 7/8 / 8.1的任务栏的最右侧单击两次“显示桌面”按钮


1
如所写,您的答案几乎没有提供有用的信息。您可以扩展一下吗?
bwDraco 2014年

0

我遇到了同样的问题,并通过在“开始”菜单中转到“切换用户”并在再次登录窗口后再次尊重工具栏的情况来设法解决了该问题。它似乎影响了所有窗口,虽然chrome可能是一个原因,但它显然影响了整个Windows系统,这暗示了Windows本身可能的罪魁祸首。在Windows XP和7上都是Chrome用户5年后,我第一次遇到该问题后就发表了这篇文章。


0

好吧,我也遇到了同样的问题,双击F11并不能解决任何问题。但是我看到了,因为我打开了两个Google Chrome窗口,所以只有一个窗口位于其他所有窗口(Steam,记事本等)的顶部。然后,我选择了一个始终位于顶部的选项卡,并使用它创建了一个新窗口,然后将其他所有选项卡从顶部窗口移至新的选项卡。现在,当我选择它时,每个窗口都会像通常一样显示在顶部。

希望这可以帮助:)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.