タイトル 拡張子で関連付けされているアプリケーションで開く
対象言語 VB4.0, Access95以降
動作確認OS Windows95,98,NT4.0
使用関数 ShellExecute
改築日 1999/04/14(1998/01/05)
Source Download

拡張子で関連付けされているアプリケーションで
ファイルを開きます。


ShellExecute の第2引数の実行コマンドは、各拡張子
によって種類があります。レジストリHKEY_CLASSES_ROOT
内を参照してください。
Windows95からは ShellExecuteEx API関数があります。
こちらの関数の方が多機能です。

1. フォームを作成し、リストボックス(Text1)とコマンドボタン(Command1)を貼り付けてください。


Option Explicit

Private Sub Command1_Click()

   Call Y_Exec(Me.hWnd, Me!Text1, "", "", SW_SHOWNORMAL)

End Sub



3.モジュールウインドウを作成し、下のソースを入力してください。


Option Explicit

'ファイルを拡張子に関連付けされているアプリケーションで開く
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_SHOWNORMAL = 1 '通常ウインドウ
Public Const SW_SHOWMINIMIZED = 2 '最小化
Public Const SW_SHOWMAXIMIZED = 3 '最大化

Public Const ERROR_FILE_NOT_FOUND = 2& 'ファイルが見つからない
Public Const ERROR_PATH_NOT_FOUND = 3& 'パス名が見つからない
Public Const ERROR_BAD_FORMAT = 11& 'Win32用EXEではないか EXE内にエラーがある


Public Sub Y_Exec(hWnd As Long, FilePath As String, parameter As String, WorkPath As String, WindowSize As Long)
'*******************************************************************
'機能 : ShellExecute関数を呼び出し、ファイルを関連付けされている
'    アプリケーションで開く
'引数 : hWnd    = 呼び出し元ウインドウハンドル
'    FilePath  = 開きたいファイルのフルパス名
'    WorkPath  = 作業フォルダのフルパス名
'    WindowSize = アプリケーションウインドウの大きさ
'           1:通常のサイズで開く
'           2:最小化して開く
'           3:最大化して開く
'*******************************************************************

   Dim longret As Long
   Dim msg As String

   longret = ShellExecute(hWnd, "Open", FilePath, parameter, WorkPath, WindowSize)

   If longret < 31 Then
     Select Case longret
       Case 0
         msg = "メモリ不足です。"
       Case ERROR_FILE_NOT_FOUND
         msg = "ファイルが見つかりません。"
       Case ERROR_PATH_NOT_FOUND
         msg = "ファイルのパスが見つかりません。"
       Case Else
         msg = longret & "その他のエラー"
     End Select
     Call MsgBox(msg, 16)
   End If

End Sub





Copyright (C)1997-2001 空耳工房 MY2Project All rights reserved.