Определить тип EXE-файла 2Delphi , Программа и Интерфейс , EXE файлОпределить тип EXE-файла 2
Оформил: DeeCo type TExeType = (etUnknown, etDOS, etWinNE {16-bit}, etWinPE {32-bit}); function GetExeType(const FileName: string): TExeType; { func to return the type of executable or dll (DOS, 16-bit, 32-bit). } (************************************************************** Usage: with OpenDialog1 do if Execute then begin Label1.Caption := FileName; Label2.Caption := ExeStrings[GetExetype(FileName)]; end; - or - case GetExeType(OpenDialog1.FileName) of etUnknown: Label3.Caption := 'Unknown file type'; etDOS : Label3.Caption := 'DOS executable'; etWinNE : {16-bit} Label3.Caption := 'Windows 16-bit executable'; etWinPE : {32-bit} Label3.Caption := 'Windows 32-bit executable'; end; ***************************************************************) var Signature, WinHdrOffset: Word; fexe: TFileStream; begin Result := etUnknown; try fexe := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try fexe.ReadBuffer(Signature, SizeOf(Signature)); if Signature = $5A4D { 'MZ' } then begin Result := etDOS; fexe.Seek($18, soFromBeginning); fexe.ReadBuffer(WinHdrOffset, SizeOf(WinHdrOffset)); if WinHdrOffset >= $40 then begin fexe.Seek($3C, soFromBeginning); fexe.ReadBuffer(WinHdrOffset, SizeOf(WinHdrOffset)); fexe.Seek(WinHdrOffset, soFrombeginning); fexe.ReadBuffer(Signature, SizeOf(Signature)); if Signature = $454E { 'NE' } then Result := etWinNE else if Signature = $4550 { 'PE' } then Result := etWinPE; end; end; finally fexe.Free; end; except end; end; procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then case GetExeType(OpenDialog1.FileName) of etUnknown: Label_ExeType.Caption := 'Unknown file type'; etDOS : Label_ExeType.Caption := 'DOS executable'; etWinNE : Label_ExeType.Caption := 'Windows 16-bit executable'; etWinPE : Label_ExeType.Caption := 'Windows 32-bit executable'; end; end; Статья Определить тип EXE-файла 2 раздела Программа и Интерфейс EXE файл может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |