<Return[S]><Top>

ShellExecute

Declare Function Api_ShellExecute& Lib "shell32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&)

Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

指定されたファイルに対して、指定された操作を実行する。

パラメータ
hwnd
    親ウィンドウのハンドルを指定する。このウィンドウは、アプリケーションが生成したすべてのメッセージボックスを受け取る。

    たとえば、アプリケーションはエラーが発生したときに、メッセージボックスを使ってそのことを伝えることがある。
lpVerb
    実行するべき操作を保持している、NULL で終わる文字列へのポインタを指定する。

    利用可能な操作の種類は、ファイルまたはファイルによって異なる。

    これらの操作には、コンテキストメニューやレジストリで列挙されるコマンドも含まれる。通常は、次の操作が有効である。

    操作               

説明                                                                                                                                                  

    edit

エディタを開く。lpFile で指定したファイルが文書ファイルではない場合、この関数は失敗する。

    explore

lpFile パラメータで指定したフォルダを選択して、エクスプローラを起動する。

    open

 

lpFile パラメータで指定したファイルを開く。lpFile パラメータで、文書ファイルまたは実行可能ファイルを指定できる。

1 つのフォルダを指定することもできる。

    print

 

lpFile パラメータで指定したファイルを印刷する。

lpFile パラメータで文書以外のファイルを指定すると、この関数は失敗する。

    properties

ファイルまたはフォルダのプロパティを表示する。

    このパラメータで NULL を指定した場合、次のことが発生する。
    ・Windows 2000 より前のシステムでは、利用可能な場合、open(開く)操作が既定で適用される。

      利用不可能な場合、ファイルなどに応じた既定の操作が適用される。
    ・Windows 2000 以降のシステムでは、利用可能な場合、open(開く)操作が既定で適用される。利用不可能な場合、ファイルなどに

      応じた既定の操作が適用される。どちらの操作も利用可能ではない場合、システムはレジストリ内に列挙されている最初の操作を適用す

      る。
lpFile
    操作対象のファイル名またはフォルダ名を保持している、NULL で終わる文字列へのポインタを指定する。
lpParameters
    lpFile パラメータで実行可能ファイルを指定した場合は、アプリケーションに渡すべきパラメータを保持している、NULL で終わる文字列への

    ポインタを指定する。この文字列の構文は、lpVerb パラメータで指定した操作によって異なる。

    lpFile パラメータで文書ファイルを指定した場合は、NULL を指定するべきである。
lpDirectory
    既定のディレクトリ名を保持している、NULL で終わる文字列へのポインタを指定する。
nShowCmd
    アプリケーションの表示方法を指示するフラグを指定する。lpFile パラメータで 1 つの文書ファイルを指定した場合、このフラグは単純に、そ

    のファイルに関連付けられているアプリケーションに渡される。フラグの扱い方は、そのアプリケーションに依存する。

    次の値のいずれかを指定する。

    値                                       

意味                                                                                                                                    

    SW_HIDE

ウィンドウを非表示にし、他のウィンドウをアクティブにする。

    SW_MAXIMIZE

指定されたウィンドウを最大化する。

    SW_MINIMIZE

 

指定されたウィンドウを最小化し、Z オーダーが次の(つまり、奥行き方向で、指定されたウィンドウのすぐ奥にある)トップレベルウィンドウをアクティブにする。

    SW_RESTORE

 

 

ウィンドウをアクティブにし、表示する。指定されたウィンドウが最小化または最大化されていた場合、元の

位置とサイズに戻ります。最小化されたウィンドウを元のサイズへ戻す場合、アプリケーションはこのフラグを

指定する。

    SW_SHOW

ウィンドウをアクティブにして、現在の位置とサイズで表示する。

    SW_SHOWDEFAULT

 

 

 

 

アプリケーション(lpFile パラメータで指定した実行可能ファイル、または文書ファイルに関連付けられている

実行可能ファイル)を起動したプログラム(開発者が作成した、ShellExecute を使う実行可能ファイル)が

CreateProcess 関数に渡す STARTUPINFO 構造体の wShowWindow メンバで指定された SW_ フラグに

基づいて、表示状態を設定する。アプリケーションは、このフラグを指定して ShowWindow 関数を呼び出

し、自らのメインウィンドウの初期の表示状態を設定する。

    SW_SHOWMAXIMIZED

ウィンドウをアクティブにして、最大化する。

    SW_SHOWMINIMIZED

ウィンドウをアクティブにして、最小化する。

    SW_SHOWMINNOACTIVE

ウィンドウを最小化する。アクティブなウィンドウは、アクティブな状態を維持する。

    SW_SHOWNA

ウィンドウを現在の状態で表示する。アクティブなウィンドウはアクティブな状態を維持する。

    SW_SHOWNOACTIVATE

ウィンドウを直前の位置とサイズで表示する。アクティブなウィンドウはアクティブな状態を維持する。

    SW_SHOWNORMAL

 

ウィンドウをアクティブにして、表示する。ウィンドウが最小化または最大化されているときは、位置とサイズを

元へ戻す。アプリケーションは、ウィンドウを最初に表示するときにこのフラグを指定する。


戻り値
    関数が成功すると、32 より大きい値が返る。関数が失敗すると、32 以下の値が返る。次の表は、これらのエラー値を示している。

    これらの戻り値は、16 ビット版の Windows アプリケーションとの下位互換性を考慮して、HINSTANCE へキャストされている。

    ただし、通常の HINSTANCE と同じものではない。返された HINSTANCE に対して実行できるのは、整数へのキャスト、および数値 32

    や次のエラーコードのいずれかと比較することだけである。

    値                                               

意味                                                                                                                         

    0

メモリまたはリソースが不足している。

    ERROR_FILE_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

指定されたファイルが見つからない。

    SE_ERR_NOASSOC

 

指定されたファイル拡張子に関連付けられたアプリケーションがない。印刷可能ではないファイルを印刷

しようとした場合も、このエラーが返る。

    SE_ERR_OOM

操作を完了するのに十分なメモリがない。

    SE_ERR_PNF

指定されたパスが、見つからない。

    SE_ERR_SHARE

共有違反が発生した。

 

解説
    この関数を使うと、フォルダのコンテキストメニュー内またはレジストリに格納されている任意のコマンドを実行できる。
    フォルダを開くには、次のコードを記述する。
        ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL)
    または
        ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL)
    フォルダを選択してエクスプローラを起動するには、次のコードを記述する。
        ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL)
    特定のディレクトリを検索するには、次のコードを記述する。
        ShellExecute(handle, "find", path_to_folder, NULL, NULL, 0)
    lpOperation パラメータで NULL を指定した場合、この関数は、lpFile パラメータで指定されたファイルを開こうとする。lpOperation で

    "open" または "explore" を指定し、lpFile パラメータでフォルダを指定した場合、この関数はそのフォルダを開くか、エクスプローラで表示し

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