Hi,
We have a C++ application that uses UI Automation to collect accessibility information of element at current mouse position (it's very similar to Inspect tool). Our application looks like this:
IUIAutomation* CIUIAutomationProvider::GetUIAutomation() { if (m_pIUIAutomation == NULL) { CoCreateInstance(__uuidof(CUIAutomation), NULL, CLSCTX_INPROC_SERVER, __uuidof(IUIAutomation), (void**)&m_pIUIAutomation); } return m_pIUIAutomation; } SPUIAutomationElement CIUIAutomation::GetCIUIAutomationFromPoint(POINT pt) { IUIAutomation* pUia = CIUIAutomationProvider::GetUIAutomation(); SPUIAutomationElement spUiaElement; if (pUia != NULL) { if (pUia->ElementFromPoint(pt, &spUiaElement) == S_OK&& spUiaElement != NULL) {//spUiaElement->get_CurrentName();
return spUiaElement;
}} }
However, the call pUia->ElementFromPoint(pt, &spUiaElement) freezes out application and the target application. Target application is the webpage www.netsuite.com, viewed by Internet Explorer 11.
After IE and Inspect are hung, we use Spy++ (a tool shipped with Visual Studio) to view the structure of IE, and we saw that IE created a new window named "FrameTab Cover".
The "FrameTab Cover" window is not exist if the IE is not hung. So my questions are:
1. What is the purpose of "FrameTab Cover" window? Why it is created?
2. We think that the creation of "FrameTab Cover" window happens while UI Automation is on the progress of collecting element from point, it changes the UI Automation tree, and it blocks the function. If that is true, can we prevent the creation of "FrameTab Cover" window? And how?
We're using Windows 7 Enterprise SP1 64-bit and IE 11.
Thanks,
Quan.