IShellDispatch
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
Shell 内のオブジェクトを表します。
解説(Remarks)
Shell 内のオブジェクトを表します。Shell を制御し、Shell 内でコマンドを実行するためのメソッドが提供されています。また、その他の Shell 関連オブジェクトを取得するためのメソッドもあります。
IShellDispatch は Shell オブジェクトを通じて実装され、アクセスされます。
メソッド 23
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
| ppid | IDispatch** | out | トップレベルアプリケーション(Shell オブジェクト)を表す IDispatch を受け取るポインタである。 |
| ppid | IDispatch** | out | 親オブジェクトを表す IDispatch を受け取るポインタである。 |
指定されたフォルダーの Folder オブジェクトを作成して返します。
| vDir | VARIANT | in | 対象とする名前空間を示す VARIANT(フォルダーパス文字列または特殊フォルダーの ShellSpecialFolderConstants 値)を指定する。 |
| ppsdf | Folder** | out | 指定した名前空間に対応する Folder オブジェクトを受け取るポインタである。 |
ユーザーがフォルダーを選択できるダイアログ ボックスを作成し、選択されたフォルダーの Folder オブジェクトを返します。
| Hwnd | INT | in | ダイアログの親ウィンドウのハンドルを指定する。 |
| Title | LPWSTR | in | ダイアログ内に表示する説明文を指定する。 |
| Options | INT | in | ダイアログの動作を制御するオプションフラグ(BIF_ 系の値)を指定する。 |
| RootFolder | VARIANT | in | ブラウズの起点となるルートフォルダーを示す VARIANT を指定する。 |
| ppsdf | Folder** | out | ユーザーが選択したフォルダーを表す Folder オブジェクトを受け取るポインタである。キャンセル時は NULL となる。 |
ShellWindows オブジェクトを作成して返します。このオブジェクトは、Shell に属するすべての開いているウィンドウのコレクションを表します。
| ppid | IDispatch** | out | 開いているシェルウィンドウの集合を表す IDispatch を受け取るポインタである。 |
指定されたフォルダーを開きます。
| vDir | VARIANT | in | 開く対象のフォルダーを示す VARIANT(パス文字列または特殊フォルダー値)を指定する。 |
指定されたフォルダーを Windows エクスプローラー ウィンドウで開きます。
| vDir | VARIANT | in | エクスプローラービューで開く対象のフォルダーを示す VARIANT(パス文字列または特殊フォルダー値)を指定する。 |
デスクトップ上のすべてのウィンドウを最小化します。このメソッドは、古いシステムではタスクバーを右クリックして [すべてのウィンドウを最小化] を選択するのと、またはタスクバーの [デスクトップの表示] アイコンをクリックするのと同じ効果があります。
すべてのデスクトップ ウィンドウを、直前の MinimizeAll コマンドの前の状態に復元します。このメソッドは、タスクバーを右クリックして [すべてのウィンドウの最小化を元に戻す] を選択するのと (古いシステムの場合)、またはタスクバーの [デスクトップの表示] アイコンを 2 回目にクリックするのと同じ効果があります。
[ファイル名を指定して実行] ダイアログをユーザーに表示します。
デスクトップ上のすべてのウィンドウを重ねて表示します。このメソッドは、タスクバーを右クリックして [ウィンドウを重ねて表示] を選択するのと同じ効果があります。
デスクトップ上のすべてのウィンドウを縦に並べて表示します。このメソッドは、タスクバーを右クリックして [ウィンドウを左右に並べて表示] を選択するのと同じ効果があります。
デスクトップ上のすべてのウィンドウを横に並べて表示します。このメソッドは、タスクバーを右クリックして [ウィンドウを上下に並べて表示] を選択するのと同じ効果があります。
[Windows のシャットダウン] ダイアログ ボックスを表示します。これは、スタート メニューをクリックして [シャットダウン] を選択するのと同じです。
td
コンピューターをドッキング ステーションから取り外します。これは、コンピューターがこのコマンドをサポートしている場合、スタート メニューをクリックして [PC の取り外し] を選択するのと同じです。
[日付と時刻] ダイアログ ボックスを表示します。このメソッドは、タスクバーの通知領域の時計を右クリックして [日付と時刻の調整] を選択するのと同じ効果があります。
[タスクバーと [スタート] メニューのプロパティ] ダイアログ ボックスを表示します。このメソッドは、タスクバーを右クリックして [プロパティ] を選択するのと同じ効果があります。
Windows ヘルプとサポート ウィンドウを表示します。このメソッドは、スタート メニューをクリックして [ヘルプとサポート] を選択するのと同じ効果があります。
[検索: すべてのファイル] ダイアログ ボックスを表示します。これは、スタート メニューをクリックして [検索] を選択するのと同じです。
[検索結果: コンピューター] ダイアログ ボックスを表示します。このダイアログ ボックスは、指定されたコンピューターの検索結果を表示します。
スタート メニューの内容を更新します。Windows XP より前のシステムでのみ使用されます。
指定されたコントロール パネル アプリケーションを実行します。アプリケーションが既に開いている場合は、実行中のインスタンスをアクティブにします。注: Windows Vista 以降、ほとんどのコントロール パネル アプリケーションは Shell 項目であり、この関数で開くことはできません。これらのコントロール パネル アプリケーションを開くには、正規名 (canonical name) を control.exe に渡します。例:
control.exe /name Microsoft.Personalization
| bstrDir | LPWSTR | in | 起動するコントロールパネル項目(.cpl ファイル名など)を指定する。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IShellDispatch "{D8F015C0-C278-11CE-A49E-444553540000}"
#usecom global IShellDispatch IID_IShellDispatch "{}"
#comfunc global IShellDispatch_get_Application 7 sptr
#comfunc global IShellDispatch_get_Parent 8 sptr
#comfunc global IShellDispatch_NameSpace 9 int,sptr
#comfunc global IShellDispatch_BrowseForFolder 10 int,wstr,int,int,sptr
#comfunc global IShellDispatch_Windows 11 sptr
#comfunc global IShellDispatch_Open 12 int
#comfunc global IShellDispatch_Explore 13 int
#comfunc global IShellDispatch_MinimizeAll 14
#comfunc global IShellDispatch_UndoMinimizeALL 15
#comfunc global IShellDispatch_FileRun 16
#comfunc global IShellDispatch_CascadeWindows 17
#comfunc global IShellDispatch_TileVertically 18
#comfunc global IShellDispatch_TileHorizontally 19
#comfunc global IShellDispatch_ShutdownWindows 20
#comfunc global IShellDispatch_Suspend 21
#comfunc global IShellDispatch_EjectPC 22
#comfunc global IShellDispatch_SetTime 23
#comfunc global IShellDispatch_TrayProperties 24
#comfunc global IShellDispatch_Help 25
#comfunc global IShellDispatch_FindFiles 26
#comfunc global IShellDispatch_FindComputer 27
#comfunc global IShellDispatch_RefreshMenu 28
#comfunc global IShellDispatch_ControlPanelItem 29 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。