GetBinaryType関数で、実行可能なファイルの種類を調べる

GetBinaryType関数を使うと、ファイルが実行可能かどうか、実行可能な場合はファイルの種類を調べることができます。

GetBinaryType関数は引数FileNameが実行可能なファイルならTrueをします。

if GetBinaryType(PChar(FileName), BinaryType) then
begin
  //ファイルが実行可能なとき
end;

引数BinaryTypeにはファイルの種類が格納されます。

case BinaryType of
  SCS_32BIT_BINARY:
    ShowMessage('Win32 ベースのアプリケーション');
  SCS_DOS_BINARY:
    ShowMessage('MS-DOS ベースのアプリケーション');
  SCS_OS216_BINARY:
    ShowMessage('6 ビット版 OS/2 ベースのアプリケーション');
  SCS_PIF_BINARY:
    ShowMessage('MS-DOS ベースのアプリケーションを実行する PIF ファイル');
  SCS_POSIX_BINARY:
    ShowMessage('POSIX ベースのアプリケーション');
  SCS_WOW_BINARY:
    ShowMessage('16 ビット版 Windows ベースのアプリケーション');
  SCS_64BIT_BINARY:
    ShowMessage('Win64 ベースのアプリケーション');
end;

次のサンプルプログラムは、変数FileNameに格納されているファイル名が実行可能なファイルなら、ファイルの種類を表示します。

var
  BinaryType: DWORD;
begin
  if GetBinaryType(PChar(FileName), BinaryType) then
  begin
    case BinaryType of
      SCS_32BIT_BINARY:
        ShowMessage('Win32 ベースのアプリケーション');
      SCS_DOS_BINARY:
        ShowMessage('MS-DOS ベースのアプリケーション');
      SCS_OS216_BINARY:
        ShowMessage('6 ビット版 OS/2 ベースのアプリケーション');
      SCS_PIF_BINARY:
        ShowMessage('MS-DOS ベースのアプリケーションを実行する PIF ファイル');
      SCS_POSIX_BINARY:
        ShowMessage('POSIX ベースのアプリケーション');
      SCS_WOW_BINARY:
        ShowMessage('16 ビット版 Windows ベースのアプリケーション');
      SCS_64BIT_BINARY:
        ShowMessage('Win64 ベースのアプリケーション');
    end;
  end;
end;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください