次の方法で共有


ShellExecuteExW 関数 (shellapi.h)

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

構文

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *pExecInfo
);

パラメーター

[in, out] pExecInfo

型: SHELLEXECUTEINFO*

実行中のアプリケーションに関する情報を格納および受信する SHELLEXECUTEINFO 構造体へのポインター。

戻り値

型: BOOL

成功した場合 TRUE を返します。それ以外の場合は、FALSEを します。 拡張エラー情報 GetLastError を呼び出します。

備考

ShellExecuteEx は、コンポーネント オブジェクト モデル (COM) を使用してアクティブ化されたシェル拡張機能 (データ ソース、コンテキスト メニュー ハンドラー、動詞の実装) に実行を委任できるため、ShellExecuteEx を呼び出 前に COM を初期化する必要があります。 一部のシェル拡張機能では、COM シングル スレッド アパートメント (STA) 型が必要です。 その場合、COM は次のように初期化する必要があります。

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

ShellExecuteEx でこれらの種類のシェル拡張機能のいずれかが使用されず、これらのインスタンスで COM を初期化する必要がまったくない場合があります。 ただし、この関数を使用する前に常に COM を初期化することをお勧めします。

DLL がプロセスに読み込まれると、ローダー ロックと呼ばれるロックが取得されます。 DllMain 関数は、常にローダー ロックの下で実行されます。 ローダー ロックを保持している間は、ShellExecuteEx を呼び出さないでください。 ShellExecuteEx は拡張可能であるため、ローダー ロックがある場合に正常に機能しないコードを読み込み、デッドロックが発生し、応答しないスレッドが発生する可能性があります。

複数のモニターを使用する場合、HWND を指定し、lpExecInfo が 指す SHELLEXECUTEINFO 構造体の lpVerb メンバーを "Properties" に設定すると、ShellExecuteEx によって作成されたウィンドウが正しい位置に表示されないことがあります。

関数が成功した場合は、SHELLEXECUTEINFO 構造体の hInstApp メンバーを 32 より大きい値に設定します。 関数が失敗した場合、hInstApp は、エラーの原因を最もよく示す SE_ERR_XXX エラー値に設定されます。 hInstApp は、16 ビット Windows アプリケーションとの互換性のために HINSTANCE として宣言されていますが、実際の HINSTANCE ではありません。 int にのみキャストでき、値 32 またはSE_ERR_XXXエラー コードとのみ比較できます。

SE_ERR_XXXエラー値は、ShellExecuteとの互換性のために提供されます。 より正確なエラー情報を取得するには、GetLastError使用します。 次のいずれかの値を返す場合があります。

エラー 形容
ERROR_FILE_NOT_FOUND 指定したファイルが見つかりませんでした。
ERROR_PATH_NOT_FOUND 指定したパスが見つかりませんでした。
ERROR_DDE_FAIL 動的データ交換 (DDE) トランザクションが失敗しました。
ERROR_NO_ASSOCIATION 指定したファイル名拡張子に関連付けられているアプリケーションはありません。
ERROR_ACCESS_DENIED 指定されたファイルへのアクセスが拒否されます。
ERROR_DLL_NOT_FOUND アプリケーションの実行に必要なライブラリ ファイルの 1 つが見つかりません。
ERROR_CANCELLED この関数はユーザーに追加情報の入力を求めたが、ユーザーは要求をキャンセルした。
ERROR_NOT_ENOUGH_MEMORY 指定されたアクションを実行するのに十分なメモリがありません。
ERROR_SHARING_VIOLATION 共有違反が発生しました。
 

URL からアイテムを開く URL が渡されたときにアクティブ化するアプリケーションを登録できます。 アプリケーションでサポートされるプロトコルを指定することもできます。 詳細については、「アプリケーション登録」を参照してください。

Windows 8 の時点 サイト チェーンサポート ShellExecuteEx 関数へのサイト チェーン ポインターを提供して、そのサイトからのサービスでのアイテムのアクティブ化をサポートできます。 詳細については、アプリケーションの起動 (ShellExecute、ShellExecuteEx、SHELLEXECUTEINFO) を参照してください。

手記

shellapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして ShellExecuteEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shellapi.h
ライブラリ Shell32.lib
DLL Shell32.dll (バージョン 3.51 以降)

関連項目

CoInitializeEx の

IShellExecuteHook の

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

ShellExecute