![]()
前回はステータスバーのダブルクリックによりプライバシーレポートが表示されるようにした。
今回はセキュリティレポートの表示を行う。セキュリティレポート用にダブルクリック処理などは前回すでに用意したので実装が必要なのは実際に表示する部分だけとなる。
セキュリティレポートは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;
}

これでステータスバーのセキュリティレポート用のペインをダブルクリックすることでセキュリティレポートが表示されるようになった。
次回はプライバシー状態やセキュリティ状態に応じてステータスバーにアイコンが表示されるようにする。
