実行ファイルの種類を取得          <TOP>


GetBinaryType 実行ファイルのタイプを取得表示します。

 

ファイル選択ボタンをクリックするとファイルオープンダイアログが開きます。

目的ファイルをクリックするとファイルの種類を表示します。

 

 

 

'================================================================
'= 実行ファイルの種類を表示
'=    (GetBinaryType.bas)
'================================================================
#include "Windows.bi"

#define SCS_32BIT_BINARY 0              'Windowsアプリケーション
#define SCS_DOS_BINARY 1                'DOSアプリケーション
#define SCS_OS216_BINARY 5              '16ビットのOS2のアプリケーション
#define SCS_PIF_BINARY 3                'PIFファイル
#define SCS_POSIX_BINARY 4              'POSIXアプリケーション
#define SCS_WOW_BINARY 2                '16bit Windowsアプリケーション

' 実行ファイルの種類を取得
Declare Function Api_GetBinaryType& Lib "Kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName$, lpBinaryType&)

Var Shared Text(3) As Object
Var Shared Button1 As Object
For i = 0 To 3
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1)))
    Text(i).SetFontSize 14
Next
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared sFile As String

'================================================================
'=
'================================================================
Declare Sub BinTypeGet edecl ()
Sub BinTypeGet()
    Var BinType As Long
    Var Msg As String
    Var Ret As Long

    sFile = GetDlgItemText("Text3")
    Ret = Api_GetBinaryType(sFile, BinType)

    If Ret <> 0 Then
        Msg = "選択されたファイルは "
        Select Case BinType
            Case SCS_32BIT_BINARY
                Msg = Msg & "Win32ベースアプリケーション"
            Case SCS_DOS_BINARY
                Msg = Msg & "MS-DOSベースアプリケーション"
            Case SCS_OS216_BINARY
                Msg = Msg & "16ビットOS/2ベースアプリケーション"
            Case SCS_PIF_BINARY
                Msg = Msg & "MS-DOSベースアプリケーションを実行するPIFファイル"
            Case SCS_POSIX_BINARY
                Msg = Msg & "POSIX ベースアプリケーション"
            Case SCS_WOW_BINARY
                Msg = Msg & "16ビットWindowsベースアプリケーション"
        End Select
    Else
        Msg = "実行可能ファイルではありません!"
    End If

    Text(3).SetWindowText Msg
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    sFile = WinOpenDlg("ファイルのオープン", "C:\*.*", "全てのファイル(*.*)", 0)
    If sFile <> Chr$(&H1B) Then
        Text(2).SetWindowText sFile
        BinTypeGet
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End