bool FindFromShell( const std::string Url ) { CComPtr< IShellWindows > spShellWin; HRESULT hr = spShellWin.CoCreateInstance( CLSID_ShellWindows ); if ( FAILED( hr ) ) return false; long nCount=0; spShellWin->get_Count(&nCount); // 取得浏览器实例个数 for(long i=0; i<nCount; i++) { CComPtr< IDispatch > spDisp; hr=spShellWin->Item(CComVariant( i ), &spDisp ); if ( FAILED( hr ) ) continue; CComQIPtr< IWebBrowser2 > spBrowser = spDisp; if ( !spBrowser ) continue; spDisp.Release(); hr = spBrowser->get_Document( &spDisp ); if ( FAILED ( hr ) ) continue; CComQIPtr< IHTMLDocument2 > spDoc = spDisp; if ( !spDoc ) continue; BSTR url; if( FAILED(spDoc->get_URL( &url )) ) continue;
CComBSTR curl; curl.Attach(url); USES_CONVERSION; CString str; str=W2A(curl); if( !strcmp(Url.c_str(), str.GetBuffer( str.GetLength() )) ) { str.ReleaseBuffer(); return true; } str.ReleaseBuffer(); } return false; }
在网上看到的检查当前打开的ie有没有制定url的页面