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