Option Compare Database Option Explicit Public Const MAX_PATH = 260 '[ShellExecute] Public Const SW_HIDE = 0 'vbHide 0 フォーカスを持ち、非表示にされるウィンドウ Public Const SW_SHOWNORMAL = 1 'vbNormalFocus 1 フォーカスを持ち、元のサイズと位置に復元されるウィンドウ Public Const SW_SHOWMINIMIZED = 2 'vbMinimizedFocus 2 フォーカスを持ち、最小化表示されるウィンドウ Public Const SW_SHOWMAXIMIZED = 3 'vbMaximizedFocus 3 フォーカスを持ち、最大化表示されるウィンドウ Public Const SW_MAXIMIZE = 3 'SW_SHOWMAXIMIZEDと同じ Public Const SW_SHOWNOACTIVATE = 4 'vbNormalNoFocus 4 最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。 Public Const SW_SHOW = 5 ' Public Const SW_MINIMIZE = 6 ' Public Const SW_SHOWMINNOACTIVE = 7 'vbMinimizedNoFocus 6 最小化表示されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。 Public Const SW_SHOWNA = 8 ' Public Const SW_RESTORE = 9 'SW_SHOWNORMALと同じ Public Const SW_SHOWDEFAULT = 10 '[ShellExecuteEx] Public Const SEE_MASK_CLASSNAME = &H1 ' Public Const SEE_MASK_CLASSKEY = &H3 ' Public Const SEE_MASK_IDLIST = &H4 ' Public Const SEE_MASK_INVOKEIDLIST = &HC ' Public Const SEE_MASK_ICON = &H10 ' Public Const SEE_MASK_HOTKEY = &H20 ' Public Const SEE_MASK_NOCLOSEPROCESS = &H40 'ShellExecuteEx終了後プロセスの実行を継続 Public Const SEE_MASK_CONNECTNETDRV = &H80 ' Public Const SEE_MASK_FLAG_DDEWAIT = &H100 ' Public Const SEE_MASK_DOENVSUBST = &H200 ' Public Const SEE_MASK_FLAG_NO_UI = &H400 'エラーメッセージを表示しない Public Const SEE_MASK_UNICODE = &H4000 ' Public Const SEE_MASK_NO_CONSOLE = &H8000 ' Public Const SEE_MASK_ASYNCOK = &H100000 ' Public Const SEE_MASK_HMONITOR = &H200000 ' Type SHELLEXECUTEINFO cbSize As Long '構造体のバイト数 fMask As Long 'SEE_MASK_xxx の組み合わせ hwnd As Long '親ウインドウのハンドル lpVerb As String '動作名("Open" "Print") lpFile As String 'ファイル名 lpParameters As String ' lpDirectory As String '作業ディレクトリ名 nShow As Long '表示方法(SW_xxx)。ファイルがドキュメントのとき 0 hInstApp As Long '起動したアプリケーションのインスタンスハンドル ' Optional fields lpIDList As Long ' lpClass As String 'ファイルクラス名 hkeyClass As Long 'ファイルクラスのレジストリキーのハンドル dwHotKey As Long ' hIcon As Long 'ファイルクラスのアイコンのハンドル hProcess As Long '起動したプロセスのハンドル End Type '拡張子に関連付けられたプログラム名を取得 Declare Function FindExecutable Lib "SHELL32" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long '拡張子に関連付けられたプログラムを実行 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 '拡張子に関連付けられたプログラムを実行(構造体 SHELLEXECUTEINFO を使用) Declare Function ShellExecuteEx Lib "SHELL32" (lpExecInfo As SHELLEXECUTEINFO) As Long 'Windowsディレクトリを取得 Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 'Windowsディレクトリを取得 Function LsGetWindowsDirectory() As String Dim Gwdvar As String, Gwdvar_Length As Long Gwdvar = Space(255) Gwdvar_Length = GetWindowsDirectory(lpBuffer:=Gwdvar, nSize:=255) '2002/10/09 Bug Fix 'LsGetWindowsDirectory = Trim$(Left$(Gwdvar, Gwdvar_Length)) LsGetWindowsDirectory = LsNullTrim(Gwdvar) End Function '文字列の最初の vbNullChar[chr$(0)] までを抜き出す Public Function LsNullTrim(strExp As String) As String Dim i As Integer i = InStr(strExp, vbNullChar) If i > 0 Then LsNullTrim = Left$(strExp, i - 1) Else LsNullTrim = strExp End If End Function