IOperationsProgressDialog
COM公式ドキュメント
進行状況ダイアログの取得、設定、および照会を行うメソッドを公開します。
メソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した進行状況ダイアログを開始します。
| hwndOwner | HWND | in | 親ウィンドウへのハンドル。 |
| flags | DWORD | in | 操作をカスタマイズするフラグ。これらのフラグは 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 オブジェクトのインスタンスは IProgressDialog、IActionProgressDialog、または IActionProgress からアクセスできなくなります。QueryInterface を使用してこれらのインターフェイスにアクセスすることはできますが、そのほとんどのメソッドは呼び出せません。IOperationsProgressDialog は、Windows Vista 以降の操作エンジン用の新しい進行状況ダイアログを表示するために使用されるインターフェイスです。
現在の進行状況ダイアログを停止します。
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
どの進行状況ダイアログ操作が発生しているか、およびプリフライトモードか元に戻すモードかを設定します。
| action | SPACTION | in | 操作を指定します。SPACTION を参照してください。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログの操作モードを設定します。
| mode | DWORD | in | 操作モードを指定します。有効な値は次のとおりです。 PDM_DEFAULT0x00000000。既定の進行状況ダイアログ操作モードを使用します。 PDM_RUN0x00000001。操作が実行中です。 PDM_PREFLIGHT0x00000002。操作は、予測される操作時間の計算など、開始前にデータを収集しています。 PDM_UNDOING0x00000004。ユーザーによる元に戻すコマンドにより、操作をロールバックしています。 PDM_ERRORSBLOCKING0x00000008。エラーダイアログにより進行の続行がブロックされています。 PDM_INDETERMINATE0x00000010。操作の長さが不定です。タイマーを表示せず、進行状況バーをマーキーモードで表示します。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
現在の進行状況ダイアログを指定されたとおりに更新します。
| ullPointsCurrent | ULONGLONG | in | 現在のポイント数。進行状況をポイントで表示するために使用します。 |
| ullPointsTotal | ULONGLONG | in | 合計ポイント数。進行状況をポイントで表示するために使用します。 |
| ullSizeCurrent | ULONGLONG | in | 現在のサイズ(バイト単位)。進行状況をバイトで表示するために使用します。 |
| ullSizeTotal | ULONGLONG | in | 合計サイズ(バイト単位)。進行状況をバイトで表示するために使用します。 |
| ullItemsCurrent | ULONGLONG | in | 現在の項目数。進行状況を項目数で表示するために使用します。 |
| ullItemsTotal | ULONGLONG | in | 合計項目数を指定します。進行状況を項目数で表示するために使用します。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
現在の進行状況ダイアログでソースと対象を示すテキスト要素を指定するために呼び出されます。
| psiSource | IShellItem* | in | ソースの Shell 項目を表す IShellItem へのポインター。 |
| psiTarget | IShellItem* | in | 対象の Shell 項目を表す IShellItem へのポインター。 |
| psiItem | IShellItem* | in | 操作エンジンによって現在操作されている項目を表す IShellItem へのポインター。このパラメーターは Windows 7 以降でのみ使用されます。それ以前のバージョンでは、このパラメーターは NULL にする必要があります。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログのタイマーを 0 にリセットします。
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログのタイマーを一時停止します。
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログのタイマーを再開します。
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログの経過時間と残り時間を取得します。
| pullElapsed | ULONGLONG* | out | 経過時間(ミリ秒単位)へのポインター。 |
| pullRemaining | ULONGLONG* | out | 残り時間(ミリ秒単位)へのポインター。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
進行状況ダイアログの操作ステータスを取得します。
| popstatus | PDOPSTATUS* | out | 操作ステータスへのポインターを格納します。PDOPSTATUS を参照してください。 |
戻り値
種類: HRESULT
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
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 指定が可能。#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 sptr,sptr #comfunc global IOperationsProgressDialog_GetOperationStatus 13 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。