ShellExecuteA 関数 (shellapi.h)

指定したファイルに対して操作を実行します。

構文

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 で終わる文字列 (この場合は 動詞と呼ばれる) へのポインター。 使用可能な動詞のセットは、特定のファイルまたはフォルダーによって異なります。 一般に、オブジェクトのショートカット メニューから使用できるアクションは動詞として使用できます。 次の動詞が一般的に使用されます。

編集

エディターを起動し、編集用にドキュメントを開きます。 lpFile がドキュメント ファイルでない場合、関数は失敗します。

explore

lpFile で指定されたフォルダーを探索します。

検索

lpDirectory で指定されたディレクトリから検索を開始します。

開く

lpFile パラメーターで指定された項目を開きます。 アイテムには、ファイルまたはフォルダーを指定できます。

print

lpFile で指定されたファイルを出力します。 lpFile がドキュメント ファイルでない場合、関数は失敗します。

RunAs

管理者としてアプリケーションを起動します。 ユーザー アカウント制御 (UAC) は、アプリケーションを管理者特権で実行するか、アプリケーションの実行に使用する管理者アカウントの資格情報を入力する同意をユーザーに求めます。

NULL

使用可能な場合は、既定の動詞が使用されます。 そうでない場合は、"open" 動詞が使用されます。 どちらの動詞も使用できない場合、システムはレジストリに一覧表示されている最初の動詞を使用します。

[in] lpFile

型: LPCTSTR

指定した動詞を実行するファイルまたはオブジェクトを指定する null で終わる文字列へのポインター。 シェル名前空間オブジェクトを指定するには、完全修飾解析名を渡します。 すべてのオブジェクトですべての動詞がサポートされているわけではないことに注意してください。 たとえば、すべてのドキュメントの種類で "print" 動詞がサポートされているわけではありません。 lpDirectory パラメーターに相対パスを使用する場合、lpFile の相対パスは使用されません。

[in, optional] lpParameters

型: LPCTSTR

lpFile で実行可能ファイルが指定されている場合、このパラメーターは null で終わる文字列へのポインターであり、アプリケーションに渡されるパラメーターを指定します。 この文字列の形式は、呼び出される動詞によって決まります。 lpFile でドキュメント ファイルが指定されている場合、lpParametersNULL である必要があります。

[in, optional] lpDirectory

型: LPCTSTR

アクションの既定の (作業) ディレクトリを指定する null で終わる文字列へのポインター。 この値が NULL の場合は、現在の作業ディレクトリが使用されます。 lpFile に相対パスが指定されている場合は、lpDirectory の相対パスを使用しないでください。

[in] nShowCmd

型: INT

アプリケーションを開いたときに表示する方法を指定するフラグ。 lpFile でドキュメント ファイルが指定されている場合、フラグは関連付けられたアプリケーションに渡されます。 それを処理する方法は、アプリケーションによって決めることができます。 ShowWindow 関数の nCmdShow パラメーターで指定できる任意の値を指定できます。

戻り値

種類: HINSTANCE

関数が成功すると、32 より大きい値が返されます。 関数が失敗した場合は、エラーの原因を示すエラー値を返します。 戻り値は、16 ビット Windows アプリケーションとの下位互換性のために HINSTANCE としてキャストされます。 ただし、これは真の HINSTANCE ではありません。 これは 、INT_PTR にのみキャストでき、次の 32 または次のエラー コードと比較します。

リターン コード 説明
0
オペレーティング システムのメモリまたはリソースが不足しています。
ERROR_FILE_NOT_FOUND
The specified file was not found. (指定されたファイルは見つかりませんでした。)
ERROR_PATH_NOT_FOUND
指定したパスが見つかりませんでした。
ERROR_BAD_FORMAT
.exe ファイルが無効です (Win32 以外の .exe またはイメージ内のエラー .exe)。
SE_ERR_ACCESSDENIED
オペレーティング システムは、指定されたファイルへのアクセスを拒否しました。
SE_ERR_ASSOCINCOMPLETE
ファイル名の関連付けが不完全または無効です。
SE_ERR_DDEBUSY
他の DDE トランザクションが処理されていたため、DDE トランザクションを完了できませんでした。
SE_ERR_DDEFAIL
DDE トランザクションが失敗しました。
SE_ERR_DDETIMEOUT
要求がタイムアウトしたため、DDE トランザクションを完了できませんでした。
SE_ERR_DLLNOTFOUND
指定した DLL が見つかりませんでした。
SE_ERR_FNF
The specified file was not found. (指定されたファイルは見つかりませんでした。)
SE_ERR_NOASSOC
指定されたファイル名拡張子に関連付けられているアプリケーションはありません。 印刷できないファイルを印刷しようとすると、このエラーも返されます。
SE_ERR_OOM
操作を完了するのに十分なメモリが不足していました。
SE_ERR_PNF
指定したパスが見つかりませんでした。
SE_ERR_SHARE
共有違反が発生しました。

拡張エラー情報については 、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);

lpOperationNULL の場合、この関数は lpFile で指定されたファイルを開きます。 lpOperation が "open" または "explore" の場合、関数はフォルダーを開いたり探索したりしようとします。

ShellExecute を呼び出した結果として起動されるアプリケーションに関する情報を取得するには、ShellExecuteEx を使用します

メモ [フォルダー オプション] の別のプロセス設定の [フォルダーの起動] ウィンドウ、ShellExecute に影響します。 このオプションが無効になっている場合 (既定の設定)、ShellExecute は新しいウィンドウを起動するのではなく、開いているエクスプローラーウィンドウを使用します。 エクスプローラー ウィンドウが開かなければ、ShellExecute によって新しいウィンドウが起動されます。
 

注意

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 以降)

こちらもご覧ください

CoInitializeEx

CreateProcessA

IShellExecuteHook

アプリケーションの起動 (ShellExecute、ShellExecuteEx、SHELLEXECUTEINFO)

ShellExecuteEx