IE11 Frame Notification Bar Save button

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-17 07:51:05

问题


On a 64-bit system with MS Excel 2010 and IE11 I'm using this code to automate download process from a website:

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

Everything goes OK until the Frame Notification Bar appears. I'm getting the HWND of this window, but can't get the HWND of the "Save" button, so that I can send click to it.


回答1:


If somebody is still trying to find the solution, for IE11 it's here.

On the very first line of the code of Vahagn Sargsyan above, instead of "Frame Notification Bar" get the exact title of the dialog box, which might be in English "View Downloads - Internet Explorer". This allows you to grab the right hWnd.

Because in IE11 there no more button accelerator to Save files, follow the solution posted here by pmr.

From pmr code, just get the following lines:

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

This should solve your issue. This unlocked the situation for me with French localisation.




回答2:


I'm assuming you're talking about that little frame that pops up at the bottom of IE giving you options to Open, Save or Cancel. If so, you might wanna check out another answer to a similar question asked here.

A secondary solution would be a more complicated one (here), but works nonetheless. You'll have to import the modules from the workbook provided in this forum (you'll need to signup for membership though, but its free so just do it.) and that'll do basically what you need, albeit in a way that allows you more flexibility (choose filepath, filename, etc) and also a little more convoluted.

Either way, hope I helped.



来源:https://stackoverflow.com/questions/31489801/ie11-frame-notification-bar-save-button

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!