VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 拡張子関連付けのアプリでファイルを開く操作
APIを使って、指定ファイルを拡張子関連付けのアプリで開いたり、指定フォルダをエクスプローラで開きます。

API (shell32.dll)

ソースはVB6用で記述しています。VB.NET以降のバージョンは型宣言に注意してください
(VB6:Long → VB.NET以降:Integer)
(VB6:Integer → VB.NET以降:Short)

お品書き
● 標準モジュールAPI定義の標準モジュールのソース
● サンプルリスト指定したフォルダをエクスプローラで開くサンプル プログラム
● サンプルリスト指定したファイルを拡張子に関連付けられたアプリで開くサンプル プログラム
● ShellExecute指定(拡張子関連付け)されたアプリを起動して、指定されたファイル(フォルダ)を開きます。
● 標準モジュール(エラー定数)API定義の標準モジュール(エラー定数)のソース


● API定義 標準モジュール

'==============================
' ファイルを拡張子に関連付けられたアプリで開く
'==============================

'指定ファイルを拡張子に関連付けられたアプリで開く
Public Declare Function ShellExecute Lib "shell32.dll" _
             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

Public Const SW_HIDE = 0
Public Const SW_MAXIMIZE = 3
Public Const SW_MINIMIZE = 6
Public Const SW_RESTORE = 9
Public Const SW_SHOW = 5
Public Const SW_SHOWDEFAULT = 10
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOWNORMAL = 1


● 指定したフォルダをエクスプローラで開く サンプル プログラム

'==========================
' 指定したフォルダをエクスプローラで開く
'==========================
Dim result As Long
Dim strFolder as String
strFolder = "c:¥work¥test¥"
result = ShellExecute(Me.hwnd, "explore", strFolder, vbNullString, vbNullString, SW_RESTORE)


● 指定したファイルを拡張子に関連付けられたアプリで開く サンプル プログラム

'========================================
' 指定したファイルを拡張子に関連付けられたアプリで開く
'========================================
Dim result As Long
Dim strFile as String
strFile = "c:¥work¥test¥sample.pdf"
result = ShellExecute(Me.hwnd, "open", strFile, vbNullString, vbNullString, SW_RESTORE)


● ShellExecute APIメソッド
【機能】指定(拡張子関連付け)されたアプリを起動して、指定されたファイル(フォルダ)を開きます。
【API構文】 HINSTANCE ShellExecute(
     HWND hwnd,
     LPCTSTR lpOperation,
     LPCTSTR lpFile,
     LPCTSTR lpParameters,
     LPCTSTR lpDirectory,
     INT nShowCmd
);
【宣言】 Public Declare Function ShellExecute Lib "shell32.dll" _
     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ウィンドウハンドルを指定します。
lpOperation実行する操作の文字列を指定します。
lpOperation説明
editlpFile で指定したファイルをエディタを開きます。文書ファイルではない場合、この関数は失敗します。
explorelpFile で指定したフォルダを エクスプローラを起動します。
openlpFile で指定したファイルを開きます。フォルダを指定することもできます。
printlpFile で指定したファイルを印刷します。文書以外のファイルを指定すると、この関数は失敗します。
propertiesファイルまたはフォルダのプロパティを表示します。

lpFileファイル名またはフォルダ名を指定します。
lpParameters起動されるアプリへのパラメータを指定します。指定がなければ、"" を指定します。
lpDirectoryデフォルトのフォルダを指定します。指定がなければ、"" を指定します。
nShowCmd起動されるアプリの表示方法を指示するフラグを指定します。
nShowCmd説明
SW_HIDE非表示
SW_MAXIMIZE最大化表示
SW_MINIMIZE最小化表示。Z オーダーが次のウィンドウをアクティブにする。
SW_RESTOREアクティブ表示。最小化または最大化されていた場合、元の位置とサイズに戻ります。
SW_SHOWアクティブ表示。現在の位置とサイズで表示します。
SW_SHOWDEFAULTデフォルト表示。
SW_SHOWMAXIMIZEDアクティブ表示で最大化。
SW_SHOWMINIMIZEDアクティブ表示で最小化。
SW_SHOWMINNOACTIVE最小化表示。アクティブであれば状態を維持。
SW_SHOWNORMALアクティブ表示。最小化または最大化されていた場合、元の位置とサイズに戻ります。

【戻り値】成功すると、32 より大きい値が返ります。関数が失敗すると、32 以下の値が返ります。
【 例 】 '指定したファイルを、拡張子関連付けしたアプリで開く
Dim result As Long
Dim strFile as String
strFile = "c:¥work¥test¥sample.txt"
result = ShellExecute(Me.hwnd, "open", strFile, vbNullString, vbNullString, SW_RESTORE)
【 例 】 '指定したアプリで、指定したファイルを開く
Dim result As Long
Dim strApl As String
Dim strParam as String
strApl = "c:¥Windows¥notepad.exe"
strParam = "c:¥work¥test¥sample.txt"
result = ShellExecute(Me.hwnd, "open", strApl, strParam, vbNullString, SW_RESTORE)


● エラー定数 標準モジュール

'0
Public Const ERROR_FILE_NOT_FOUND = 2
Public Const ERROR_PATH_NOT_FOUND = 3
Public Const ERROR_BAD_FORMAT = 11
Public Const SE_ERR_ACCESSDENIED = 5
Public Const SE_ERR_ASSOCINCOMPLETE = 27
Public Const SE_ERR_DDEBUSY = 30
Public Const SE_ERR_DDEFAIL = 29
Public Const SE_ERR_DDETIMEOUT = 28
Public Const SE_ERR_DLLNOTFOUND = 32
Public Const SE_ERR_FNF = 2
Public Const SE_ERR_NOASSOC = 31

Public Const SE_ERR_OOM = 8
Public Const SE_ERR_PNF = 3
Public Const SE_ERR_SHARE = 26
'メモリまたはリソースが不足しています。
'指定されたファイルが見つかりませんでした。
'指定されたパスが見つかりませんでした。
'.exe ファイルが無効です。Win32 の .exe ではないか、.exe イメージ内にエラーがあります。
'オペレーティングシステムが、指定されたファイルへのアクセスを拒否しました。
'ファイル名の関連付けが不完全または無効です。
'ほかの DDE トランザクションが現在処理中なので、DDE トランザクションを完了できませんでした。
'DDE トランザクションが失敗しました。
'要求がタイムアウトしたので、DDE トランザクションを完了できませんでした。
'指定されたダイナミックリンクライブラリ(DLL)が見つかりませんでした。
'指定されたファイルが見つかりませんでした。
'指定されたファイル拡張子に関連付けられたアプリケーションがありません。
'印刷可能ではないファイルを印刷しようとした場合も、このエラーが返ります。
'操作を完了するのに十分なメモリがありません。
'指定されたパスが、見つかりませんでした。
'共有違反が発生しました。