● プロジェクトがコンパイル済みか調べる ●

2パターン用意。まあ前者を使うのが簡単だし確実で正解である。

'---------------------------------------------------------------
' 関数名: IsVBCompiled
' 機能  : プロジェクトがコンパイル済みか調べる
' 引数  : なし
' 返り値:True…コンパイル済み、False…VB開発環境内プロジェクト
'---------------------------------------------------------------
Public Function IsVBCompiled() As Boolean

    'VB環境下ならFalse、EXEならTrueを返す
    On Error GoTo ErrHandler

    '0で除算して意図的にエラーを起こす
    Debug.Print 1 / 0

    'EXEなら上のコードでエラーが起きない
    IsVBCompiled = True
    Exit Function

ErrHandler:

End Function


'ロードされている実行モジュールのフルパス名を取得する
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long

'---------------------------------------------------------------
' 関数名: IsVBCompiled
' 機能  : プロジェクトがコンパイル済みか調べる
' 引数  : なし
' 返り値:True…コンパイル済み、False…VB開発環境内プロジェクト
' 備考  :とりあえずVB5.0専用
'---------------------------------------------------------------
Public Function IsVBCompiled() As Boolean

    Dim TempBuff As String * 256
    Dim ModuleFileName As String
    Dim ModuleFileNameLen As Long

    '実行モジュールのフルパス名を取得する
    ModuleFileNameLen = GetModuleFileName(0&, TempBuff, Len(TempBuff))

    'NULL削除
    ModuleFileName = UCase$(Left$(TempBuff, ModuleFileNameLen))

    'プロジェクトがコンパイル済みか調べる
    'VB4.0の場合は "\VB4.EXE" としてね
    'VB6.0の場合は "\VB6.EXE" としてね
    IsVBCompiled = Not (Right$(ModuleFileName, 8) = "\VB5.EXE")

End Function

戻る