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

ITaskbarList2

COM
IID602d4995-b13a-429b-a66e-1935e44f4317継承元ITaskbarList自前メソッド開始 vtbl8

公式ドキュメント

ITaskbarList インターフェースを拡張し、ウィンドウを全画面表示としてマークするメソッドを公開します。

解説(Remarks)

このインターフェースは、継承元である ITaskbarList インターフェースのメソッドも提供します。

Shell も全画面アプリケーションを自動的に検出しようとしますが、ITaskbarList2::MarkFullscreenWindow メソッドを使用する場合ほど信頼性は高くありません。

メソッド 1

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

vtbl 8 HRESULT MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen)

ウィンドウを全画面としてマークします。

hwndHWNDinマークするウィンドウのハンドル。
fFullscreenBOOLinウィンドウに設定したい全画面状態を示すブール値。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

fFullscreen の値を TRUE に設定すると、Shell はこのウィンドウを全画面ウィンドウとして扱い、このウィンドウがアクティブなときはタスクバーが z オーダーの最下部に移動されます。fFullscreen の値を FALSE に設定すると全画面マークが解除されますが、Shell がそのウィンドウを確実に全画面ではないものとして扱うわけではありませんfFullscreenFALSE の場合、Shell は自動検出機能に依存してウィンドウの扱い方を決定するため、依然としてそのウィンドウを全画面としてフラグ付けする可能性があります。

Windows 7 以降では、 ウィンドウを表示する前に SetProp(hwnd, L"NonRudeHWND", reinterpret_cast<HANDLE>(TRUE)) を呼び出すことで、そのウィンドウを全画面として扱わないよう Shell に指示できます。これにより、タスクバーが z オーダー上でウィンドウより下に配置されるよう自身を調整することがなくなります。これは ITaskbarList2::MarkFullscreenWindow(FALSE) と似ていますが、Shell が自動検出機能にフォールバックせず、ウィンドウを全画面として扱わない点が異なります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITaskbarList2 "{602D4995-B13A-429B-A66E-1935E44F4317}"
#usecom global ITaskbarList2 IID_ITaskbarList2 "{56FDF344-FD6D-11D0-958A-006097C9A090}"
#comfunc global ITaskbarList2_MarkFullscreenWindow  8 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。