第44回 セキュリティレポートを表示する (タブブラウザーを作る)

tabbrowser182.gif
前回はステータスバーのダブルクリックによりプライバシーレポートが表示されるようにした。

今回はセキュリティレポートの表示を行う。セキュリティレポート用にダブルクリック処理などは前回すでに用意したので実装が必要なのは実際に表示する部分だけとなる。

セキュリティレポートはwininet.dllからエクスポートされているInternetShowSecurityInfoByURLWもしくはInternetShowSecurityInfoByURLAにURLを指定して呼び出すことで表示される。
	//■処理変更
	bool	ShowSecurityReport(HWND hWnd)
	{
		HRESULT		hr;
		CComBSTR	bstrURL;

		if(_pIWebBrowser2 == NULL)
			return	false;

		//URL取得
		hr = _pIWebBrowser2->get_LocationURL(&bstrURL);
		if(FAILED(hr))
			return	false;

		return	ShowSecurityReport(hWnd,(CAtlString)bstrURL);
	}


	//■追加
	bool	ShowSecurityReport(HWND hWnd,LPCTSTR pszURL)
	{
		bool		ret;
		HMODULE		hDLL;

		BOOL (WINAPI* pfnInternetShowSecurityInfoByURLW)(const WCHAR*,HWND);
		BOOL (WINAPI* pfnInternetShowSecurityInfoByURLA)(const char*,HWND);

		if(pszURL == NULL)
			return	false;

		hDLL = ::LoadLibrary(_T("wininet.dll"));
		if(hDLL == NULL)
			return	false;

		ret = false;
		(FARPROC&)pfnInternetShowSecurityInfoByURLW = ::GetProcAddress(hDLL,"InternetShowSecurityInfoByURLW");
		if(pfnInternetShowSecurityInfoByURLW)
		{
	#ifdef	_UNICODE
			pfnInternetShowSecurityInfoByURLW(pszURL,hWnd);
	#else
			CAtlStringW	ustrURL;
			ustrURL = pszURL;
			pfnInternetShowSecurityInfoByURLW(ustrURL.GetBuffer(0),hWnd);
	#endif
			ret = true;
		}

		if(ret == false)
		{
			(FARPROC&)pfnInternetShowSecurityInfoByURLA = ::GetProcAddress(hDLL,"InternetShowSecurityInfoByURLA");
			if(pfnInternetShowSecurityInfoByURLA)
			{
	#ifdef	_UNICODE
				CAtlStringA	strBuff;
				strBuff = pszURL;
				pfnInternetShowSecurityInfoByURLA(strBuff.GetBuffer(0),hWnd);
	#else
				pfnInternetShowSecurityInfoByURLA(pszURL,hWnd);
	#endif
				ret = true;
			}
		}

		::FreeLibrary(hDLL);

		return	ret;
	}

tabbrowser183.gif
これでステータスバーのセキュリティレポート用のペインをダブルクリックすることでセキュリティレポートが表示されるようになった。

次回はプライバシー状態やセキュリティ状態に応じてステータスバーにアイコンが表示されるようにする。

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


カテゴリー「タブブラウザーを作る」 のエントリー