我找到了一些代码可以将浏览器带到前面,即使它被最小化了。但是我不知道如何获取浏览器的 hwnd。
我已经查看了 FindWindow API 函数,但是您需要类名和窗口名。我发现我需要的类名是“Chrome_WidgetWin_1”,但窗口名称会根据浏览器中打开的内容不断变化。
我认为该窗口的“子级”之一的类名为“WrapperNativeWindowClass”,我不确定是否可以使用它来查找原始父级。
谁能建议如何查找 chrome 浏览器的窗口句柄(使用 VBA)?
FindWindow 函数中的参数是可选的。如果您仅提供lpClassName,它将找到该类的第一个窗口句柄。如果您仅提供lpWindowName,则处理具有该名称的第一个窗口。如果同时提供这两个条件,则只能返回符合这两个条件的窗口句柄。我(不幸的是)有 Internet Explorer,所以假设只有一个窗口,我会按照您的要求执行以下操作:
Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Public Sub Test()
Dim ClassName As String
Dim WindowName As String
Dim hwnd As Long
Dim Ret As Long
ClassName = "IEFrame" 'You would use "Chrome_WidgetWin_1"
WindowName = vbNullString
hwnd = FindWindow(ClassName, WindowName)
Ret BringWindowToTop(hwnd)
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您有多个 Chrome 窗口,则必须考虑使用该EnumWindows功能。