所以我正在尝试在我正在编写的 vba 宏中关闭窗口/应用程序。网上的许多帖子都建议使用FindWindow
windows api。
我开始很慢,我试图从我的宏中关闭一个记事本窗口。(这是我想要的几件事之一,但它似乎是最简单的)我找到了一个解决方案,我忘记了它是在哪里发布的,它又短又甜。
Sub CheckNotepad()
Dim hwnd As Long
hwnd = FindWindow("Notepad", vbNullString)
If hwnd Then
MsgBox "Notepad is running, the window handle is " & hwnd
Else
MsgBox "Notepad is not running"
End If
End Sub
看起来很棒,它是如何获取记事本窗口句柄的开始,从那里我可以找到使用该句柄关闭窗口的代码。但这对我不起作用!
我发现的所有示例都使用 2 个参数,我会说其中一半vbNullString
用作第二个参数,其中一些使用字符串作为特定窗口的标题。但这些都不适合我。
唯一有效的是为第二个参数提供 0(我假设这是代替vbNullString
),但如果我尝试使用vbnullstring
或实际字符串,我会收到类型不匹配错误。如果我尝试使用任何其他数字,则 excel 将停止工作。(出现可爱的“程序已停止工作”消息。
那么,可以给我一些关于为什么会发生这种情况的建议吗?我可以只使用 0,但我猜我的用户会打开其他记事本窗口,所以我希望能够提供一个参数来查找特定的记事本窗口。(它将是一个临时窗口,在宏期间弹出并随后关闭,因为我不希望它打开让他们看到)
提前致谢