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;