折腾无极限
不曾长大

完美解决Windows11 Edge浏览器自动窗口置顶的问题

因为搜狗浏览器莫名其妙的不能使用右击菜单问题,一直反馈给运营团队,也一直没有消息,索性直接卸载了。

换了腾讯浏览器试试,UI看上去好low,于是弃用。

最后换成了微软的Edge,不得不说,可以安装任意Chrome插件不用翻墙,数据随时同步方便,保存的密码需要开机密码才可见,极大提升了工作的便利性。

然而,万事无完美。

最近碰上了Edge浏览器(版本 99.0.1150.52 (正式版本) (64 位))窗口自动置顶的问题,我用的Windows 11系统(Windows 11 专业工作站版 21H2)。虽然关掉重启可以解决问题,但是我每次工作都开十几个窗口,关掉重新来比较麻烦。当然可以用OneTab插件临时保存打开的窗口,重启浏览器之后恢复,不过有些窗口需要登陆密码才能进去,还是略显麻烦。

今天又碰到了Edge浏览器窗口自动置顶了,于是搜索了下,发现这个方法可以完美解决取消置顶的问题。

新建记事本,将如下代码粘贴到记事本里保存。

'Make edge calcel always on top.
AlwaysOnTop "msedge", ".", False

Sub AlwaysOnTop(appName, regExpTitle, setOnTop)
' @author: Jeremy England (SimplyCoded)
' @user: Spencer Lyo
  If (setOnTop) Then setOnTop = "-1" Else setOnTop = "-2"
  CreateObject("wscript.shell").Run "powershell -Command """ & _    
    "$Code = Add-Type -MemberDefinition '" & vbcrlf & _
    "  [DllImport(\""user32.dll\"")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X,int Y, int cx, int cy, uint uFlags);" & vbcrlf & _
    "  [DllImport(\""user32.dll\"")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);" & vbcrlf & _
    "  public static void AlwaysOnTop (IntPtr fHandle, int insertAfter) {" & vbcrlf & _
    "    if (insertAfter == -1) { ShowWindow(fHandle, 7); ShowWindow(fHandle, 9); }" & vbcrlf & _
    "    SetWindowPos(fHandle, new IntPtr(insertAfter), 0, 0, 0, 0, 3);" & vbcrlf & _
    "  }' -Name PS -PassThru" & vbcrlf & _
    "for ($s=0;$s -le 9; $s++){$hWnd = (GPS " & appName & " -EA 0 | ? {$_.MainWindowTitle -Match '" & regExpTitle & "'}).MainWindowHandle;Start-Sleep 1;if ($hWnd){break}}" & vbcrlf & _  
    "$Code::AlwaysOnTop($hWnd, " & setOnTop & ")""", 0, True
  End Sub

将记事本名称重命名为“ xxx.vbs ”。

原文说是每次打开浏览器运行一下即可,我是今天出现问题了才运行,等后面发现问题再看看。

还有个自动运行脚本:

start msedge.exe && cscript xxx.vbs

去年在用Windows 10的时候,有一个ERP软件窗口也会莫名的自动置顶,那个时候都说是微软输入法的锅,最后也没有找到解决方法。换成Windows 11后,那个ERP软件倒是没有置顶过,反而是这个微软Edge浏览器置顶了。

非常感谢原文:解决Chromium总是置顶的BUG

 

 

赞(0) 打赏
未经允许不得转载:子痕的博客 » 完美解决Windows11 Edge浏览器自动窗口置顶的问题

评论 抢沙发

登录

找回密码

注册