ファイルの関連づけに基づいてファイルを起動する

ファイルの関連付けに基づいてファイルを起動するテクニックです。

通常、Shell関数で"Text.DOC"を指定するとMicrosoft Wordは起動されますが、"Text.DOC"は開いてくれません。
ファイルをダブルクリックして開くように、ファイルの関連付けに基づいてファイルを起動する場合はShellExecute関数を使用します。

サンプル(32bit)

'ファイルの関連付けに基づいてファイルを起動するAPI
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_SHOWNORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8


Private Sub Command1_Click()

    Dim nRC As Long
    
    nRC = ShellExecute(Me.hwnd, vbNullString, "c:\test.doc", vbNullString, "c:\", SW_SHOWNORMAL)

End Sub

サンプル解説

ShellExecute関数でファイルの関連付けに基づいてファイルを起動しています。

引数は次の通りです。
(引数の名前は、Declare Functionで指定したものです)

メンバー I/O 説明
hwnd In 親ウィンドウのハンドル
lpOperation In 関連づけのアクション
Nullの場合は標準のアクションになります
lpFile In 実行したいファイル名
lpParameters In アプリケーションに渡すパラメータ
ない場合はNullを指定
lpDirectory In 実行時のディレクトリ名
nShowCmd In プログラムを実行するときのウィンドウの形式

ウィンドウの形式は次の通りです。

SW_HIDE ウィンドウ隠し、他のウィンドウをアクティブにします
SW_SHOWNORMAL ウィンドウをアクティブにし、元のサイズと位置に表示
SW_SHOWMINIMIZED ウィンドウをアクティブにし、最小化表示
SW_SHOWMAXIMIZED ウィンドウをアクティブにし、最大化表示
SW_SHOWNOACTIVATE ウィンドウを前回表示したサイズと位置で表示
SW_SHOW 元のサイズと位置に表示
SW_SHOWMINNOACTIVE 最小化表示
SW_SHOWNA ウィンドウを現在の状態で表示

ウィンドウの形式はアプリケーションによっては指定した動作をしない場合があります。


[ Window Close ]