IEを起動してGoogleで検索する

Internet ExploreはCOMインターフェースで操作できる。ここではCoCreateInstanceでIEを起動してGoogle検索を実行した。
Googleの既定の文字コードはUTF8。UnicodeやShift-JISからUTF8へ変換するのはちょっとだけ面倒なので、ここではShift-JISをそのまま検索に用いている。

依存環境:ATL
#include "atlstr.h"

#include "exdisp.h"
#include "mshtml.h"


//
//	IEによるGoogle検索
//
//Internet Explorerを新たに起動してGoogleで検索する
//
bool	SearchByGoogle(LPCTSTR pszWord)
{
	HRESULT		hr;
	VARIANT		vEmpty;
	BSTR		bstrURL;
	CAtlString	strURL;
	CAtlString	strWord;
	IWebBrowserApp*	pIWebBrowserApp;

	if(pszWord == NULL || *pszWord == NULL)
		return	false;

	//IE起動
	pIWebBrowserApp = NULL;
	hr = ::CoCreateInstance(CLSID_InternetExplorer,NULL,CLSCTX_SERVER,IID_IWebBrowserApp,(void**)&pIWebBrowserApp);
	if(FAILED(hr) || pIWebBrowserApp == NULL)
		return	false;


	//検索語のエンコード
	//面倒なのでa-zや0-9など必要ないものも%xx形式にしている
	{
		int			i;
		int			nSize;
		CAtlStringA	strTmp1;
		CAtlString	strTmp2;

		strTmp1 = pszWord;
		nSize = strTmp1.GetLength();
		for(i = 0; i < nSize; i++)
		{
			strTmp2.Format(_T("%%%02x"),(BYTE)strTmp1[i]);
			strWord += strTmp2;
		}
	}

	//URLを開く
	::VariantInit(&vEmpty);
	strURL.Format(_T("http://www.google.co.jp/search?q=%s&ie=sjis&hl=ja&lr=&num=100"),strWord);
	bstrURL = strURL.AllocSysString();
	hr = pIWebBrowserApp->Navigate(bstrURL,&vEmpty,&vEmpty,&vEmpty,&vEmpty);
	::SysFreeString(bstrURL);

	//IEの可視化
	if(SUCCEEDED(hr))
		hr = pIWebBrowserApp->put_Visible(VARIANT_TRUE);

	if(FAILED(hr))
	{
		pIWebBrowserApp->Quit();
		pIWebBrowserApp->Release();
		return	false;
	}

	return	true;
}




void	Test(void)
{
	::CoInitialize(NULL);

	SearchByGoogle(_T("プログラミング"));

	::CoUninitialize();
}

プロジェクトファイルをダウンロード


カテゴリー「Internet Explorer」 のエントリー