ShellExecuteW 関数 (shellapi.h)
指定したファイルに対して操作を実行します。
構文
HINSTANCE ShellExecuteW(
[in, optional] HWND hwnd,
[in, optional] LPCWSTR lpOperation,
[in] LPCWSTR lpFile,
[in, optional] LPCWSTR lpParameters,
[in, optional] LPCWSTR lpDirectory,
[in] INT nShowCmd
);
パラメーター
[in, optional] hwnd
型: HWND
UI またはエラー メッセージを表示するために使用される親ウィンドウへのハンドル。 操作がウィンドウに関連付けられていない場合、この値は NULL にすることができます。
[in, optional] lpOperation
型: LPCTSTR
実行するアクションを指定する 、null で終わる文字列 (この場合は 動詞と呼ばれる) へのポインター。 使用可能な動詞のセットは、特定のファイルまたはフォルダーによって異なります。 一般に、オブジェクトのショートカット メニューから使用できるアクションは動詞として使用できます。 次の動詞が一般的に使用されます。
編集
エディターを起動し、編集用にドキュメントを開きます。 lpFile がドキュメント ファイルでない場合、関数は失敗します。
explore
lpFile で指定されたフォルダーを探索します。
検索
lpDirectory で指定されたディレクトリから検索を開始します。
開く
lpFile パラメーターで指定された項目を開きます。 アイテムには、ファイルまたはフォルダーを指定できます。
lpFile で指定されたファイルを出力します。 lpFile がドキュメント ファイルでない場合、関数は失敗します。
RunAs
管理者としてアプリケーションを起動します。 ユーザー アカウント制御 (UAC) は、アプリケーションを管理者特権で実行するか、アプリケーションの実行に使用する管理者アカウントの資格情報を入力する同意をユーザーに求めます。
NULL
使用可能な場合は、既定の動詞が使用されます。 そうでない場合は、"open" 動詞が使用されます。 どちらの動詞も使用できない場合、システムはレジストリに一覧表示されている最初の動詞を使用します。
[in] lpFile
型: LPCTSTR
指定した動詞を実行するファイルまたはオブジェクトを指定する null で終わる文字列へのポインター。 シェル名前空間オブジェクトを指定するには、完全修飾解析名を渡します。 すべてのオブジェクトですべての動詞がサポートされているわけではないことに注意してください。 たとえば、すべてのドキュメントの種類で "print" 動詞がサポートされているわけではありません。 lpDirectory パラメーターに相対パスを使用する場合、lpFile の相対パスは使用されません。
[in, optional] lpParameters
型: LPCTSTR
lpFile で実行可能ファイルが指定されている場合、このパラメーターは null で終わる文字列へのポインターであり、アプリケーションに渡されるパラメーターを指定します。 この文字列の形式は、呼び出される動詞によって決まります。 lpFile でドキュメント ファイルが指定されている場合、lpParameters は NULL である必要があります。
[in, optional] lpDirectory
型: LPCTSTR
アクションの既定の (作業) ディレクトリを指定する null で終わる文字列へのポインター。 この値が NULL の場合は、現在の作業ディレクトリが使用されます。 lpFile に相対パスが指定されている場合は、lpDirectory の相対パスを使用しないでください。
[in] nShowCmd
型: INT
アプリケーションを開いたときに表示する方法を指定するフラグ。 lpFile でドキュメント ファイルが指定されている場合、フラグは関連付けられたアプリケーションに渡されます。 それを処理する方法は、アプリケーションによって決めることができます。 ShowWindow 関数の nCmdShow パラメーターで指定できる任意の値を指定できます。
戻り値
種類: HINSTANCE
関数が成功すると、32 より大きい値が返されます。 関数が失敗した場合は、エラーの原因を示すエラー値を返します。 戻り値は、16 ビット Windows アプリケーションとの下位互換性のために HINSTANCE としてキャストされます。 ただし、これは真の HINSTANCE ではありません。 これは 、INT_PTR にのみキャストでき、次の 32 または次のエラー コードと比較します。
リターン コード | 説明 |
---|---|
|
オペレーティング システムのメモリまたはリソースが不足しています。 |
|
The specified file was not found. (指定されたファイルは見つかりませんでした。) |
|
指定したパスが見つかりませんでした。 |
|
.exe ファイルが無効です (Win32 以外の .exe またはイメージ内のエラー .exe)。 |
|
オペレーティング システムは、指定されたファイルへのアクセスを拒否しました。 |
|
ファイル名の関連付けが不完全または無効です。 |
|
他の DDE トランザクションが処理されていたため、DDE トランザクションを完了できませんでした。 |
|
DDE トランザクションが失敗しました。 |
|
要求がタイムアウトしたため、DDE トランザクションを完了できませんでした。 |
|
指定した DLL が見つかりませんでした。 |
|
The specified file was not found. (指定されたファイルは見つかりませんでした。) |
|
指定されたファイル名拡張子に関連付けられているアプリケーションはありません。 印刷できないファイルを印刷しようとすると、このエラーも返されます。 |
|
操作を完了するのに十分なメモリが不足していました。 |
|
指定したパスが見つかりませんでした。 |
|
共有違反が発生しました。 |
拡張エラー情報については 、GetLastError を呼び出します。
注釈
ShellExecute は、コンポーネント オブジェクト モデル (COM) を使用してアクティブ化されたシェル拡張機能 (データ ソース、コンテキスト メニュー ハンドラー、動詞の実装) に実行を委任できるため、ShellExecute が呼び出される前に COM を初期化する必要があります。 一部のシェル拡張機能では、COM シングル スレッド アパートメント (STA) 型が必要です。 その場合は、次に示すように COM を初期化する必要があります。
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
ShellExecute がこれらの種類のシェル拡張機能のいずれかを使用せず、それらのインスタンスで COM を初期化する必要がまったくないインスタンスは確かにあります。 ただし、この関数を使用する前に 常 に COM を初期化することをお勧めします。
このメソッドを使用すると、フォルダーのショートカット メニューまたはレジストリに格納されているコマンドを実行できます。
フォルダーを開くには、次のいずれかの呼び出しを使用します。
ShellExecute(handle, NULL, <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
または
ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
フォルダーを探索するには、次の呼び出しを使用します。
ShellExecute(handle, "explore", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
ディレクトリのシェルの Find ユーティリティを起動するには、次の呼び出しを使用します。
ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);
lpOperation が NULL の場合、この関数は lpFile で指定されたファイルを開きます。 lpOperation が "open" または "explore" の場合、関数はフォルダーを開いたり探索したりしようとします。
ShellExecute を呼び出した結果として起動されるアプリケーションに関する情報を取得するには、ShellExecuteEx を使用します。
注意
shellapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして ShellExecute を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shellapi.h |
Library | Shell32.lib |
[DLL] | Shell32.dll (バージョン 3.51 以降) |