请教:如何获取多选项卡IE,当前浏览的是哪个页面??
SHDocVw::IShellWindowsPtr m_spSHWinds;//初始化Com环境 CoInitialize(NULL); m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)); if(m_spSHWinds) { //获得ie数量 int n = m_spSHWinds->GetCount(); //这个可以获取到所有IE的页面。。 }HWND CMyRock::GetMenuParentIE8() { long nBrowser = 0; m_spWebBrowser->get_HWND(&nBrowser); HWND hWndParent = (HWND)nBrowser; HWND hWnd = GetWindow(hWndParent, GW_CHILD); // 查询主窗体,用SPY++看,会明白一些 if(hWnd) { TCHAR szClassName[MAX_PATH]; while(hWnd) { memset(szClassName,0,MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("Frame Tab"))==0) { // if(IsWindowVisible(hWnd)) { hWnd = GetWindow(hWnd, GW_CHILD); while(hWnd) { memset(szClassName, 0, MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("TabWindowClass"))==0) { hWnd = GetWindow(hWnd, GW_CHILD); while(hWnd) { memset(szClassName, 0, MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("Shell DocObject View"))==0) { hWnd = FindWindowEx(hWnd, NULL, _T("Internet Explorer_Server"), NULL); MessageBox(NULL, L"111", L"2222", 1); break; } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } return hWnd; }
[解决办法]
这个?
http://topic.csdn.net/t/20021118/14/1185841.html
[解决办法]
HWND mainWnd = NULL, addressEdit = NULL;
mainWnd = ::FindWindowEx( mainWnd, NULL, TEXT( "WorkerW" ), NULL );
mainWnd = ::FindWindowEx( mainWnd, NULL, TEXT( "ReBarWindow32" ), NULL );
mainWnd = ::FindWindowEx( mainWnd, NULL, TEXT( "Address Band Root" ), NULL);
addressBarEdit = ::FindWindowEx( mainWnd, NULL, TEXT( "Static" ), NULL);
对这个窗口发送WM_GETTEXT,参考:http://www.vckbase.com/document/viewdoc/?id=240