Vba 有人能解释一下这到底在做什么吗?
我一直在寻找一种使用vba关闭windows资源管理器的方法,我发现了一些有效的方法。然而,我实际上不知道它实际上在做什么,或者它的任何意义。有人能解释一下下面发生了什么吗Vba 有人能解释一下这到底在做什么吗?,vba,excel,user32,Vba,Excel,User32,我一直在寻找一种使用vba关闭windows资源管理器的方法,我发现了一些有效的方法。然而,我实际上不知道它实际上在做什么,或者它的任何意义。有人能解释一下下面发生了什么吗 Private Const CLOSE_WIN = &H10 Dim Hwnd As Long Private Declare Function apiFindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassname As Stri
Private Const CLOSE_WIN = &H10
Dim Hwnd As Long
Private Declare Function apiFindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassname As String, _
ByVal lpWindowName As String) _
As Long
Private Declare Function apiPostMessage _
Lib "user32" Alias "PostMessageA" _
(ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) _
As Long
Hwnd = apiFindWindow("CabinetWClass", vbNullString)
Dim retval As Long
If (Hwnd) Then
retval = apiPostMessage(Hwnd, CLOSE_WIN, 0, ByVal 0&)
End If
谢谢我认为这里的关键是
CabinetWClass
是Windows资源管理器的类名(它最初被称为文件柜,而不是资源管理器)。您正在与Windows内置API进行交互。找到具有该类名的窗口,然后将其传递给该apiPostMessage
,并告诉它关闭所找到的特定窗口的WIN
(&H10
)。最后5行是这里真正的代码。上面的所有内容都只是声明与此处所需的windows API交互的函数和常量。我假设上面的代码段缺少从Hwnd=apiFindWindow开始的所有内容的封闭函数签名(…
到结束,如果
?就目前而言,它不会编译。这种骗局正是像CabinetWClass
这样的遗留名称继续存在的原因--以确保像这样构思不周的代码继续工作..阅读文档,可能不会那么混乱。我还想看看。它使用的是Win32 API函数要找到一个CabinetWClass
窗口,然后向该窗口发送一条&H10
窗口消息,将其关闭-如果您不明白这意味着什么,请在顶部添加一条注释,上面写着''这里是龙
,然后继续;在阅读了有关Win32 API函数和window me的机制后,再返回该窗口一个太宽泛的主题,在这里用一个像样的答案无法涵盖。