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

IOperationsProgressDialog

COM
IID0c9fb851-e5c9-43eb-a370-f0677b13874c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

進行状況ダイアログの取得、設定、および照会を行うメソッドを公開します。

メソッド 11

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

vtbl 3 HRESULT StartProgressDialog(HWND hwndOwner, DWORD flags)

指定した進行状況ダイアログを開始します。

hwndOwnerHWNDin親ウィンドウへのハンドル。
flagsDWORDin

操作をカスタマイズするフラグ。これらのフラグは Shlobj.h で宣言されている点に注意してください。次の値の組み合わせです。

PROGDLG_NORMAL (0x00000000)

既定の通常の進行状況ダイアログ動作。

PROGDLG_MODAL (0x00000001)

ダイアログは hwndOwner に対してモーダルになります。既定の設定はモードレスです。

PROGDLG_AUTOTIME (0x00000002)

「Line3」のテキストを残り時間で更新します。IOperationsProgressDialog::StartProgressDialog によって開始された進行状況ダイアログは残り時間を自動的に表示するため、このフラグを明示的に設定する必要はありません。

PROGDLG_NOTIME (0x00000004)

残り時間を表示しません。このフラグを IOperationsProgressDialog を通じて設定することは、ダイアログの目的に反するため推奨しません。

PROGDLG_NOMINIMIZE (0x00000008)

最小化ボタンを表示しません。

PROGDLG_NOPROGRESSBAR (0x00000010)

進行状況バーを表示しません。

PROGDLG_MARQUEEPROGRESS (0x00000020)

このフラグはこのメソッドでは無効です。進行状況バーをマーキーモードに設定するには、IOperationsProgressDialog::SetMode のフラグを使用してください。

PROGDLG_NOCANCEL (0x00000040)

操作をキャンセルできないため、キャンセルボタンを表示しません。この値は、どうしても必要な場合にのみ使用してください。

OPPROGDLG_DEFAULT (0x00000000)

Windows 7 以降。既定の通常の操作進行状況ダイアログ動作を示します。

OPPROGDLG_ENABLEPAUSE (0x00000080)

一時停止ボタンを表示します。操作を一時停止できる状況でのみ使用してください。

OPPROGDLG_ALLOWUNDO (0x00000100)

ダイアログから操作を元に戻すことができます。停止ボタンが元に戻すに変わります。押されると、元に戻すボタンは停止に戻ります。

OPPROGDLG_DONTDISPLAYSOURCEPATH (0x00000200)

進行状況ダイアログにソースファイルのパスを表示しません。

OPPROGDLG_DONTDISPLAYDESTPATH (0x00000400)

進行状況ダイアログに宛先ファイルのパスを表示しません。

OPPROGDLG_NOMULTIDAYESTIMATES (0x00000800)

Windows 7 以降。完了までの推定時間が 1 日を超える場合、時間を表示しません。

OPPROGDLG_DONTDISPLAYLOCATIONS (0x00001000)

Windows 7 以降。進行状況ダイアログに場所の行を表示しません。

戻り値

種類: HRESULT

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

解説(Remarks)

進行状況ダイアログは、そのダイアログが報告対象とするファイル操作とは別のスレッドで作成する必要があります。ダイアログがファイル操作と同じスレッドで実行されている場合、進行状況メッセージはよくてもリソースが許す範囲でしか送信されません。ファイル操作と同じスレッド上の進行状況メッセージは、まったく送信されないこともあります。

IOperationsProgressDialog::StartProgressDialog が呼び出されると、その CLSID_ProgressDialog オブジェクトのインスタンスは IProgressDialogIActionProgressDialog、または IActionProgress からアクセスできなくなります。QueryInterface を使用してこれらのインターフェイスにアクセスすることはできますが、そのほとんどのメソッドは呼び出せません。IOperationsProgressDialog は、Windows Vista 以降の操作エンジン用の新しい進行状況ダイアログを表示するために使用されるインターフェイスです。

vtbl 4 HRESULT StopProgressDialog()

現在の進行状況ダイアログを停止します。

戻り値

種類: HRESULT

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

vtbl 5 HRESULT SetOperation(SPACTION action)

どの進行状況ダイアログ操作が発生しているか、およびプリフライトモードか元に戻すモードかを設定します。

actionSPACTIONin操作を指定します。SPACTION を参照してください。

戻り値

種類: HRESULT

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

vtbl 6 HRESULT SetMode(DWORD mode)

進行状況ダイアログの操作モードを設定します。

modeDWORDin

操作モードを指定します。有効な値は次のとおりです。

PDM_DEFAULT

0x00000000。既定の進行状況ダイアログ操作モードを使用します。

PDM_RUN

0x00000001。操作が実行中です。

PDM_PREFLIGHT

0x00000002。操作は、予測される操作時間の計算など、開始前にデータを収集しています。

PDM_UNDOING

0x00000004。ユーザーによる元に戻すコマンドにより、操作をロールバックしています。

PDM_ERRORSBLOCKING

0x00000008。エラーダイアログにより進行の続行がブロックされています。

PDM_INDETERMINATE

0x00000010。操作の長さが不定です。タイマーを表示せず、進行状況バーをマーキーモードで表示します。

戻り値

種類: HRESULT

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

vtbl 7 HRESULT UpdateProgress(ULONGLONG ullPointsCurrent, ULONGLONG ullPointsTotal, ULONGLONG ullSizeCurrent, ULONGLONG ullSizeTotal, ULONGLONG ullItemsCurrent, ULONGLONG ullItemsTotal)

現在の進行状況ダイアログを指定されたとおりに更新します。

ullPointsCurrentULONGLONGin現在のポイント数。進行状況をポイントで表示するために使用します。
ullPointsTotalULONGLONGin合計ポイント数。進行状況をポイントで表示するために使用します。
ullSizeCurrentULONGLONGin現在のサイズ(バイト単位)。進行状況をバイトで表示するために使用します。
ullSizeTotalULONGLONGin合計サイズ(バイト単位)。進行状況をバイトで表示するために使用します。
ullItemsCurrentULONGLONGin現在の項目数。進行状況を項目数で表示するために使用します。
ullItemsTotalULONGLONGin合計項目数を指定します。進行状況を項目数で表示するために使用します。

戻り値

種類: HRESULT

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

vtbl 8 HRESULT UpdateLocations(IShellItem* psiSource, IShellItem* psiTarget, IShellItem* psiItem)

現在の進行状況ダイアログでソースと対象を示すテキスト要素を指定するために呼び出されます。

psiSourceIShellItem*inソースの Shell 項目を表す IShellItem へのポインター。
psiTargetIShellItem*in対象の Shell 項目を表す IShellItem へのポインター。
psiItemIShellItem*in操作エンジンによって現在操作されている項目を表す IShellItem へのポインター。このパラメーターは Windows 7 以降でのみ使用されます。それ以前のバージョンでは、このパラメーターは NULL にする必要があります。

戻り値

種類: HRESULT

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

vtbl 9 HRESULT ResetTimer()

進行状況ダイアログのタイマーを 0 にリセットします。

戻り値

種類: HRESULT

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

vtbl 10 HRESULT PauseTimer()

進行状況ダイアログのタイマーを一時停止します。

戻り値

種類: HRESULT

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

vtbl 11 HRESULT ResumeTimer()

進行状況ダイアログのタイマーを再開します。

戻り値

種類: HRESULT

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

vtbl 12 HRESULT GetMilliseconds(ULONGLONG* pullElapsed, ULONGLONG* pullRemaining)

進行状況ダイアログの経過時間と残り時間を取得します。

pullElapsedULONGLONG*out経過時間(ミリ秒単位)へのポインター。
pullRemainingULONGLONG*out残り時間(ミリ秒単位)へのポインター。

戻り値

種類: HRESULT

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

vtbl 13 HRESULT GetOperationStatus(PDOPSTATUS* popstatus)

進行状況ダイアログの操作ステータスを取得します。

popstatusPDOPSTATUS*out操作ステータスへのポインターを格納します。PDOPSTATUS を参照してください。

戻り値

種類: HRESULT

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IOperationsProgressDialog "{0C9FB851-E5C9-43EB-A370-F0677B13874C}"
#usecom global IOperationsProgressDialog IID_IOperationsProgressDialog "{}"
#comfunc global IOperationsProgressDialog_StartProgressDialog  3 sptr,int
#comfunc global IOperationsProgressDialog_StopProgressDialog   4
#comfunc global IOperationsProgressDialog_SetOperation         5 int
#comfunc global IOperationsProgressDialog_SetMode              6 int
#comfunc global IOperationsProgressDialog_UpdateProgress       7 int64,int64,int64,int64,int64,int64
#comfunc global IOperationsProgressDialog_UpdateLocations      8 sptr,sptr,sptr
#comfunc global IOperationsProgressDialog_ResetTimer           9
#comfunc global IOperationsProgressDialog_PauseTimer           10
#comfunc global IOperationsProgressDialog_ResumeTimer          11
#comfunc global IOperationsProgressDialog_GetMilliseconds      12 var,var
#comfunc global IOperationsProgressDialog_GetOperationStatus   13 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。