📄 pefuncdemomain.pas
字号:
unit PeFuncDemoMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
ExportsListBox: TListBox;
ImportsListBox: TListBox;
ImportedLibsListBox: TListBox;
BitmapResListBox: TListBox;
OpenBtn: TButton;
IconsListBox: TListBox;
FormsListBox: TListBox;
FileNameLabel: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
CursorsListBox: TListBox;
Label7: TLabel;
procedure OpenBtnClick(Sender: TObject);
private
{ Private declarations }
public
procedure BeginUpdateListBoxes;
procedure EndUpdateListBoxes;
procedure UpdateViews(const FileName: TFileName);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
JclPeImage;
procedure TForm1.BeginUpdateListBoxes;
var
I: Integer;
C: TComponent;
begin
for I := 0 to ComponentCount - 1 do
begin
C := Components[I];
if C is TListBox then
with TListBox(C) do
begin
Items.BeginUpdate;
Items.Clear;
end;
end;
end;
procedure TForm1.EndUpdateListBoxes;
var
I, Extent: Integer;
C: TComponent;
begin
for I := 0 to ComponentCount - 1 do
begin
C := Components[I];
if C is TListBox then
with TListBox(C) do
begin
ItemIndex := -1;
if Items.Count > 0 then
Extent := Tag
else
Extent := 0;
SendMessage(Handle, LB_SETHORIZONTALEXTENT, Extent, 0);
Items.EndUpdate;
end;
end;
end;
procedure TForm1.OpenBtnClick(Sender: TObject);
begin
with OpenDialog1 do
begin
FileName := '';
if Execute then
if IsValidPeFile(FileName) then
UpdateViews(FileName)
else
ShowMessageFmt('The file "%s" is not valid PE file.', [FileName]);
end;
end;
procedure TForm1.UpdateViews(const FileName: TFileName);
begin
BeginUpdateListBoxes;
Screen.Cursor := crHourGlass;
try
FileNameLabel.Caption := FileName;
// Exported functions
PeExportedFunctions(FileName, ExportsListBox.Items);
// Imported functions
PeImportedFunctions(FileName, ImportsListBox.Items, '', True);
// Imported libraries (not recursive)
PeImportedLibraries(FileName, ImportedLibsListBox.Items, False, False);
// VCL form names
PeBorFormNames(FileName, FormsListBox.Items);
// Bitmap, Icon and Cursor names
PeResourceKindNames(FileName, rtBitmap, BitmapResListBox.Items);
PeResourceKindNames(FileName, rtIcon, IconsListBox.Items);
PeResourceKindNames(FileName, rtCursor, CursorsListBox.Items);
finally
Screen.Cursor := crDefault;
EndUpdateListBoxes;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -