借助VBA脚本,我想自动化第三方应用程序。我已经设法使用Windows API自动化所有窗口,但是菜单控件(栏和弹出窗口)却失败了。该应用程序已经很旧了,但由于它仅在公司内部使用,因此我无法真正为您提供更多信息。
我已经设法通过Windows API读取菜单项名称,但是当我发送WM_COMMAND时,应用程序崩溃了。另外,我无法检索有关这些菜单项的任何其他信息。尽管如此,它仍然可以在记事本上完美运行。因此,我认为第三方应用程序没有希望。
选项专用模块 显式选项
私有声明PtrSafe函数FindWindow库“ user32”别名“ FindWindowA”(ByVal lpClassName为任意,ByVal lpWindowName为任意)
公共Sub main()
Dim hwnd As LongPtr: hwnd = API.FindWindow(lpClassName:="Notepad", lpWindowName:="Untitled - Notepad")
If hwnd = 0 Then Exit Sub
With New UIAutomationClient.CUIAutomation
With .ElementFromHandle(hwnd:=ByVal hwnd).FindFirst(scope:=TreeScope.TreeScope_Descendants, _
condition:=.CreatePropertyCondition(propertyId:=UIA_PropertyIds.UIA_NamePropertyId, _
Value:="File"))
Debug.Print .CurrentName
End With
End With
结束子
我通过inspect.exe注意到实际的菜单项(“新建”,“新窗口”,“打开...”等)是: -类型为UIA_MenuItemControlTypeId。 -“文件”的祖先,但“文件”没有子项。
您能告诉我如何从“文件”中获取“新”吗?
感谢您的帮助!