使用VBA关闭IE11中的框架通知栏

时间:2018-10-08 08:29:43

标签: vba internet-explorer web-scraping automation

我正在使用VBA自动执行网站上的某些操作。而且我的浏览器是IE11。

我知道,如果我想单击框架通知栏上的“保存”选项,则可以使用以下代码块:

Dim o as IUIAutomation
Set o = New CUIAutomation
Dim h as Long
h = ie.hwnd
Dim ie as InternetExplorer 
ie = CreateObject("InternetExplorer.Application")
h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)
Dim e as IUIAutomationElement
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

类似地,如果我想单击“打开”选项,则可以将上面代码中的“保存”替换为“打开”。

M问题是单击“保存”选项后,我还有3个要单击的选项:“打开”,“打开文件夹”,“查看下载”。我也可以通过单击“框架通知栏”右上角的按钮来关闭“框架通知栏”。它在下面可见:

enter image description here

我的问题是:如何使用VBA单击此按钮?

1 个答案:

答案 0 :(得分:0)

所以我使用以下代码使它起作用。

像往常一样将以下内容放在模块顶部

<DataGridComboBoxColumn 
    DisplayMemberPath="Item"
    Header="Item"
    ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
    SelectedItemBinding="{Binding AssetDescription}">
</DataGridComboBoxColumn>

将其放在InvokePattern.Invoke之后,我把时间值放在安全的地方,可能没有必要。

Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_DESTROY = &H2
Public Const WM_CLOSE = &H10