我正在尝试获取一个宏来在 Windows 资源管理器窗口完成后选择或激活该窗口,或者如果未找到该窗口则打开该窗口。目前,它在打开时确实找到了窗口句柄(保存为“窗口”),但它不会激活该窗口!
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function BringWindowToTop Lib "user32" _
(ByVal hWnd As Long) As Long
Dim directory As String
directory = "C:\...\practice contracts\"
Dim directorySplit() As String
directorySplit = Split(directory, "\")
'--the rest of the macro--
Dim window As Long
window = FindWindow("CabinetWClass", directorySplit(UBound(directorySplit) - 1))
If window <> 0 Then
BringWindowToTop window
Else
Shell "explorer.exe " & directory, vbNormalFocus
End If
我也尝试过AppActivate directorySplit(UBound(directorySplit) - 1)
代替FindWindow
但它也会找到但不激活窗口。我可以说它找到了窗口及其句柄,因为如果我关闭资源管理器窗口并尝试运行AppActivate
反对,它会引发错误。
任何帮助,将不胜感激。
你能试试这个吗?
在这两种情况下它都对我有用。刚刚又试了一次。
如果由于找不到窗口而在 appactivate 上出错,则会转到窗口打开部分并打开文件夹。
On Error GoTo WindowOpen
AppActivate directorySplit(UBound(directorySplit) - 1)
Exit Sub
WindowOpen:
Shell "explorer.exe " & directory, vbNormalFocus
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)