public InternetSecurityManager(WebBrowser _WebBrowser)
{
// ActiveXコントロール取得
_WebBrowser.Url = new Uri("about:blank"); //ActiveXを初期化する
do
{
Thread.Sleep(100);
Application.DoEvents();
} while (_WebBrowser.ReadyState != WebBrowserReadyState.Complete);
ocx = _WebBrowser.ActiveXInstance;
// IServiceProvider.QueryService() を使って IProfferService を取得
ocxServiceProvider = (WebBrowserAPI.IServiceProvider)ocx;
try
{
ocxServiceProvider.QueryService(
ref WebBrowserAPI.SID_SProfferService,
ref WebBrowserAPI.IID_IProfferService, out profferServicePtr);
}
catch (SEHException ex)
{
MyCommon.TraceOut(ex, "ocxServiceProvider.QueryService() HRESULT:" + ex.ErrorCode.ToString("X8") + Environment.NewLine);
return;
}
catch (ExternalException ex)
{
MyCommon.TraceOut(ex, "ocxServiceProvider.QueryService() HRESULT:" + ex.ErrorCode.ToString("X8") + Environment.NewLine);
return;
}
profferService = (WebBrowserAPI.IProfferService)Marshal.GetObjectForIUnknown(profferServicePtr);
// IProfferService.ProfferService() を使って
// 自分を IInternetSecurityManager として提供
try
{
int cookie = 0;
profferService.ProfferService(
ref WebBrowserAPI.IID_IInternetSecurityManager, this, out cookie);
}
catch (SEHException ex)
{
MyCommon.TraceOut(ex, "IProfferSerive.ProfferService() HRESULT:" + ex.ErrorCode.ToString("X8") + Environment.NewLine);
return;
}
catch (ExternalException ex)
{
MyCommon.TraceOut(ex, "IProfferSerive.ProfferService() HRESULT:" + ex.ErrorCode.ToString("X8") + Environment.NewLine);
return;
}
}