Win32 API 日本語リファレンス
ホームUI.Shell › INewWindowManager

INewWindowManager

COM
IIDd2bc4c84-3f72-4a52-a604-7bcbf3982cbb継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

別のウィンドウによって起動されたウィンドウを表示するかブロックするかを判断するメソッドを公開し、ポップアップウィンドウの制御を可能にします。

解説(Remarks)

実装するタイミング

アプリケーションが WebBrowser コントロールをホストしていて、ポップアップ管理機能を組み込みたい場合に INewWindowManager を実装します。

INewWindowManager を実装すると、Windows Internet Explorer のポップアップブロックロジックの一部またはすべてをオーバーライドできます。既定の Internet Explorer のポップアップブロックロジックを使用するには、INewWindowManager::EvaluateNewWindow を実装して E_FAIL を返します。これにより、WebBrowser コントロールは既定の Internet Explorer 実装を使用するようになります。あるいは、WebBrowser コントロールをホストするアプリケーションが、FEATURE_WEBOC_POPUPMANAGEMENT フラグを指定して CoInternetSetFeatureEnabled を呼び出すことでも同じ結果が得られます。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT EvaluateNewWindow(LPWSTR pszUrl, LPWSTR pszName, LPWSTR pszUrlContext, LPWSTR pszFeatures, BOOL fReplace, DWORD dwFlags, DWORD dwUserActionTime)

表示しようとしている新しいウィンドウに関するデータを受け取り、ユーザーの設定に基づいてそのウィンドウの表示を許可するかどうかを判断します。

pszUrlLPWSTRin新しいウィンドウに表示されるコンテンツの URL を格納したバッファへのポインター。
pszNameLPWSTRin新しいウィンドウの名前を格納したバッファへのポインター。このパラメーターは NULL にできます。
pszUrlContextLPWSTRin新しいウィンドウを開くコマンドを発行した URL を格納したバッファへのポインター。
pszFeaturesLPWSTRin新しいウィンドウの機能文字列を格納したバッファへのポインター。この値は NULL にできます。
fReplaceBOOLinpszUrl で指定された新しいコンテンツが、新しいウィンドウを作成する代わりに既存のウィンドウに読み込まれる場合に使用されるブール値。新しいドキュメントで履歴リスト内の現在のドキュメントを置き換える場合は TRUE、新しいドキュメントに新しいエントリを割り当てる場合は FALSE です。
dwFlagsDWORDin新しいウィンドウを開く呼び出しに関する状況情報を提供する、NWMF 列挙体からの 1 つまたは複数のフラグ。フラグが不要な場合、この値は 0 にできます。
dwUserActionTimeDWORDin最後のユーザー操作が発生したときのティックカウント。その操作がどのくらい前に発生したかを知るには、GetTickCount を呼び出し、その結果をこのパラメーターの値と比較します。

戻り値

型: HRESULT

次を含む標準エラーコードを返します。

戻り値 説明
S_OK
ウィンドウの表示を許可します。
S_FALSE
ウィンドウの表示をブロックします。
E_FAIL
ホストされた WebBrowser コントロール向けに INewWindowManager を実装する場合、この値は WebBrowser コントロールに既定の実装を使用するよう指示します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_INewWindowManager "{D2BC4C84-3F72-4A52-A604-7BCBF3982CBB}"
#usecom global INewWindowManager IID_INewWindowManager "{}"
#comfunc global INewWindowManager_EvaluateNewWindow  3 wstr,wstr,wstr,wstr,int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。