Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  345

•  TDictionary Custom Sort  3 489

•  Fast Watermark Sources  3 234

•  3D Designer  4 999

•  Sik Screen Capture  3 487

•  Patch Maker  3 695

•  Айболит (remote control)  3 895

•  ListBox Drag & Drop  3 157

•  Доска для игры Реверси  82 851

•  Графические эффекты  4 094

•  Рисование по маске  3 387

•  Перетаскивание изображений  2 760

•  Canvas Drawing  2 910

•  Рисование Луны  2 718

•  Поворот изображения  2 330

•  Рисование стержней  2 222

•  Paint on Shape  1 623

•  Генератор кроссвордов  2 305

•  Головоломка Paletto  1 822

•  Теорема Монжа об окружностях  2 326

•  Пазл Numbrix  1 716

•  Заборы и коммивояжеры  2 091

•  Игра HIP  1 313

•  Игра Go (Го)  1 260

•  Симулятор лифта  1 508

•  Программа укладки плитки  1 257

•  Генератор лабиринта  1 580

•  Проверка числового ввода  1 400

•  HEX View  1 534

•  Физический маятник  1 385

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Определить тип 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;




Похожие по теме исходники

Erase self EXE

EXE/PE Properties

Binary Search Images in EXE

HWnd2EXE

 

Exec and Wait

Add Code to EXE

Executor

ExeFog (сжатие EXE)

 

PE EXE Coder

Разбиение файла на части

Текст внутри файла




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте