有没有人知道是否有方法从"框架通知栏中提取文件名"在IE11中使用hwnd?下面的代码很好,但我试图找到一个更好的方法来查找文件(动态命名),然后从下载文件夹中提取最新的文件。提前致谢!
Sub SaveFile(IE As InternetExplorerMedium)
Dim o As IUIAutomation, buffer As String, length As Long, result As Long, e As IUIAutomationElement, h As Long
Set o = New CUIAutomation
h = IE.hWnd
h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)
If h = 0 Then Exit Sub
Set e = o.ElementFromHandle(ByVal h)
Dim iCnd As IUIAutomationCondition
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Save")
Dim Button As IUIAutomationElement
Set Button = e.FindFirst(TreeScope_Subtree, iCnd)
Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke
End Sub
答案 0 :(得分:1)
我知道这是一个古老的问题,但是由于没有答案,而且我找到了解决问题的方法,因此我认为分享它很好。
您要查找的元素是Notification bar Text
我的解决方案基于本教程:
添加这些声明:
Dim iCnd2 As IUIAutomationCondition
Dim iCnd3 As IUIAutomationCondition
Dim iCnd2and3 As IUIAutomationCondition
Dim NotificationBarText As IUIAutomationElement
在Set e = o.ElementFromHandle(ByVal h)
之后添加以下内容:
Set iCnd2 = o.CreatePropertyCondition(UIA_NamePropertyId, "Notification bar Text")
Set iCnd3 = o.CreatePropertyCondition(UIA_ControlTypePropertyId, UIA_TextControlTypeId)
Set iCnd2and3 = o.CreateAndCondition(iCnd2, iCnd3)
Set NotificationBarText = e.FindFirst(TreeScope_Descendants, iCnd2and3)
NotificationBarTextString = NotificationBarText.GetCurrentPropertyValue(UIA_ValueValuePropertyId)
baseUrl = Mid(Mid(IE.LocationURL, InStr(IE.LocationURL, "//") + 2), 1, InStr(Mid(IE.LocationURL, InStr(IE.LocationURL, "//") + 2), "/") - 1)
FileName = Replace(Replace(NotificationBarTextString, "Do you want to open or save ", ""), " from " & baseUrl & "?", "")