IE11框架通知栏保存按钮

IE11 Frame Notification Bar Save button

在装有 MS Excel 2010 和 IE11 的 64 位系统上,我使用此代码自动从网站下载过程:

hWnd = FindWindowEx(IE.hWnd, 0, "Frame Notification Bar", vbNullString)

If hWnd Then
    hWnd = FindWindowEx(hWnd, 0&, "Button", "Save")
End If

If hWnd Then
    SetForegroundWindow (hWnd)
    Sleep 600
    SendMessage hWnd, BM_CLICK, 0, 0
End If

在框架通知栏出现之前一切正常。我正在获取此 window 的 HWND,但无法获取 "Save" 按钮的 HWND,因此我可以向其发送点击。

我假设您正在谈论在 IE 底部弹出的小框架,它为您提供打开、保存或取消选项。如果是这样,您可能想查看另一个类似问题的答案

第二个解决方案会更复杂 (here),但仍然有效。您必须从该论坛提供的工作簿中导入模块(虽然您需要注册成为会员,但它是免费的,所以就这样做吧。)这基本上可以满足您的需求,尽管是以某种方式允许您更灵活(选择文件路径、文件名等),也更复杂一些。

不管怎样,希望我能帮到你。

如果有人仍在寻找解决方案,请点击此处获取适用于 IE11 的解决方案。

在上面 Vahagn Sargsyan 代码的第一行,而不是 "Frame Notification Bar" 获取对话框的确切标题,可能是英文 "View Downloads - Internet Explorer"。这使您可以抓住正确的 hWnd。

因为在 IE11 中没有更多的按钮加速器来保存文件,请按照发布的解决方案 here by pmr

从 pmr 代码中,只需得到以下几行:

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

这应该可以解决您的问题。这为我打开了法语本地化的局面。