Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Определить тип EXE-файла 2

Delphi , Программа и Интерфейс , EXE файл

Определить тип EXE-файла 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

 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.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: EXE файл ::


реклама

::


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
22.09.2020 11:51:08/0.0028820037841797/2