urlget.cpp

来自「通过给定的url地址」· C++ 代码 · 共 58 行

CPP
58
字号
BOOL CShowAd::GetCurrNewUrl(CString &strNewUrl)
{
	strNewUrl.Empty();

	SHDocVw::IShellWindowsPtr  spsWnds;
	spsWnds.CreateInstance( __uuidof(SHDocVw::ShellWindows) ) ;
	if( NULL == spsWnds )
	{//没有Shellwindow启动,IE也就没运行了 
		return FALSE;
	}

	long nCount = spsWnds->GetCount();
	if( nCount<0 )
	{//没一个IE窗口
		return FALSE;
	}
	
	IDispatchPtr	spDisp;   
	long			index;     //从0到Count-1循环
	BSTR			bstrURL;
	CString			strURL;
	for(long i = 0; i < nCount; i++)
	{
		_variant_t va(i, VT_I4);
		spDisp = spsWnds->Item(va);
		SHDocVw::IWebBrowser2Ptr spBrowser( spDisp );   
		if( spBrowser )
		{
			spBrowser->get_LocationURL(&bstrURL);	
			CString strUrlTemp(bstrURL);			//变为单字节	
			
			// 释放bstrURL,非常重要		
			::SysFreeString(bstrURL);
			if( !strUrlTemp.IsEmpty() )
			{
				strUrlTemp.MakeLower();
				int nRet = strUrlTemp.Find("http://",0) ;				
				if(nRet == -1)			
					continue;				
				nRet = strUrlTemp.Find('/',strlen("http://"));
				strUrlTemp = strUrlTemp.Mid(strlen("http://"),nRet-strlen("http://"));
				if(m_strUrlSet.count((LPCTSTR)strUrlTemp) == 0)
				{				
					m_strUrlSet.insert((LPCTSTR)strUrlTemp);
					strNewUrl += strUrlTemp;
					//strNewUrl += "\r\n";
					strNewUrl += " ";
				}		
			}			
		}
	}

//	strNewUrl.Format(strToSend.c_str());
	if(strNewUrl.GetLength() == 0 )
		return FALSE;
	return TRUE;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?