📄 peviewermain.pas
字号:
begin
S := PeStripFunctionAW(Name);
WinHelp(Application.Handle, PChar(FWin32Help), HELP_KEY, DWORD(S));
end;
procedure TMainForm.OpenLibrary1Execute(Sender: TObject);
begin
if IsPeDumpChildActive then
OpenFile(TPeDumpChild(ActiveMDIChild).ActiveLibName, False)
else
OpenFile(TPeSearchChild(ActiveMDIChild).ActiveLibName, False);
end;
procedure TMainForm.Copy1Update(Sender: TObject);
begin
TAction(Sender).Enabled := (Screen.ActiveControl is TListView) or
((Screen.ActiveControl is TRichEdit) and ((Screen.ActiveControl as TRichEdit).SelLength > 0));
end;
procedure TMainForm.OpenLibrary1Update(Sender: TObject);
begin
OpenLibrary1.Enabled :=
(IsPeDumpChildActive and (TPeDumpChild(ActiveMDIChild).ActiveLibName <> '')) or
(IsSearchChildActive and (TPeSearchChild(ActiveMDIChild).ActiveLibName <> ''));
end;
function TMainForm.ActiveListViewToStrings: TStrings;
begin
Screen.Cursor := crHourGlass;
try
Result := TStringList.Create;
try
Result.Capacity := 256;
ListViewToStrings(Screen.ActiveControl as TListView, Result, True);
except
FreeAndNil(Result);
raise;
end;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TMainForm.Copy1Execute(Sender: TObject);
var
SL: TStrings;
begin
if Screen.ActiveControl is TRichEdit then
(Screen.ActiveControl as TRichEdit).CopyToClipboard
else
if Screen.ActiveControl is TListView then
begin
SL := ActiveListViewToStrings;
try
Clipboard.AsText := SL.Text;
finally
SL.Free;
end;
end;
end;
procedure TMainForm.SelectAll1Execute(Sender: TObject);
begin
if Screen.ActiveControl is TRichEdit then
TRichEdit(Screen.ActiveControl).SelectAll
else
if Screen.ActiveControl is TListView then
ListViewSelectAll(TListView(Screen.ActiveControl));
end;
procedure TMainForm.GroupImports1Update(Sender: TObject);
begin
with TAction(Sender) do
begin
Enabled := IsPeDumpChildActive;
if Enabled then
Checked := TPeDumpChild(ActiveMDIChild).GroupImports
else
Checked := False;
end;
end;
procedure TMainForm.GroupImports1Execute(Sender: TObject);
begin
with TPeDumpChild(ActiveMDIChild) do
begin
GroupImports := not GroupImports;
GroupImports1.Checked := GroupImports;
end;
end;
procedure TMainForm.Search1Execute(Sender: TObject);
begin
TPeSearchChild.Create(Self);
end;
function TMainForm.IsSearchChildActive: Boolean;
begin
Result := ActiveMDIChild is TPeSearchChild;
end;
procedure TMainForm.ViewResources1Update(Sender: TObject);
begin
TAction(Sender).Enabled := IsPeDumpChildActive and
TPeDumpChild(ActiveMDIChild).HasDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE];
end;
procedure TMainForm.ViewResources1Execute(Sender: TObject);
var
F: TForm;
begin
with ActiveMDIChild as TPeDumpChild do
begin
F := FindPeResourceView(PeImage);
if F = nil then
TPeResViewChild.CreateEx(Self, PeImage)
else
F.BringToFront;
end;
end;
function TMainForm.FindPeResourceView(APeImage: TJclPeImage): TForm;
var
I: Integer;
begin
Result := nil;
for I := 0 to MDIChildCount - 1 do
if (MDIChildren[I] is TPeResViewChild) and (TPeResViewChild(MDIChildren[I]).PeImage = APeImage) then
begin
Result := MDIChildren[I];
Break;
end;
end;
function TMainForm.IsPeResChildActive: Boolean;
begin
Result := ActiveMDIChild is TPeResViewChild;
end;
procedure TMainForm.ViewResDetails1Update(Sender: TObject);
begin
with TAction(Sender) do
begin
Enabled := IsPeResChildActive;
if Enabled then
Checked := TPeResViewChild(ActiveMDIChild).ShowSpecialDirView
else
Checked := False;
end;
end;
procedure TMainForm.ViewResDetails1Execute(Sender: TObject);
begin
with ViewResDetails1 do
begin
Checked := not Checked;
TPeResViewChild(ActiveMDIChild).ShowSpecialDirView := Checked;
end;
end;
procedure TMainForm.ViewResHex1Update(Sender: TObject);
begin
with TAction(Sender) do
begin
Enabled := IsPeResChildActive;
if Enabled then
Checked := TPeResViewChild(ActiveMDIChild).ShowAsHexView
else
Checked := False;
end;
end;
procedure TMainForm.ViewResHex1Execute(Sender: TObject);
begin
with ViewResHex1 do
begin
Checked := not Checked;
TPeResViewChild(ActiveMDIChild).ShowAsHexView := Checked;
end;
end;
procedure TMainForm.Save1Update(Sender: TObject);
begin
TAction(Sender).Enabled := (Screen.ActiveControl is TListView) or
(IsPeResChildActive and TPeResViewChild(ActiveMDIChild).CanSaveResource) or
(IsGenDefChildActive and TPeGenDefChild(ActiveMDIChild).CanSave);
end;
procedure TMainForm.About1Execute(Sender: TObject);
begin
ShowToolsAboutBox;
end;
procedure TMainForm.SendMail1Execute(Sender: TObject);
begin
SendEmail;
end;
procedure TMainForm.ShowUnitGen1Update(Sender: TObject);
begin
TAction(Sender).Enabled := IsPeDumpChildActive and
TPeDumpChild(ActiveMDIChild).HasDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
end;
procedure TMainForm.ShowUnitGen1Execute(Sender: TObject);
var
CurrFileName: TFileName;
begin
CurrFileName := (ActiveMDIChild as TPeDumpChild).FileName;
with TPeGenDefChild.Create(Self) do
FileName := CurrFileName;
end;
function TMainForm.IsGenDefChildActive: Boolean;
begin
Result := ActiveMDIChild is TPeGenDefChild;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
PostMessage(Handle, UM_CHECKPARAMSTR, 0, 0);
end;
procedure TMainForm.UMCheckParamStr(var Message: TMessage);
var
I: Integer;
FileName: TFileName;
begin
for I := 1 to ParamCount do
begin
FileName := PathGetLongName(ParamStr(I));
if (Length(FileName) > 0) and not (FileName[1] in ['-', '/']) then
OpenFile(FileName, False);
end;
end;
procedure TMainForm.WMDropFiles(var Message: TWMDropFiles);
var
FilesCount, I: Integer;
FileName: array[0..MAX_PATH] of Char;
begin
FilesCount := DragQueryFile(Message.Drop, MAXDWORD, nil, 0);
for I := 0 to FilesCount - 1 do
begin
if (DragQueryFile(Message.Drop, I, @FileName, SizeOf(FileName)) > 0) and
IsValidPeFile(FileName) then
OpenFile(FileName, True);
end;
DragFinish(Message.Drop);
Message.Result := 0;
Application.BringToFront;
end;
procedure TMainForm.UnmangleNames1Update(Sender: TObject);
begin
with TAction(Sender) do
begin
Enabled := IsPeDumpChildActive;
if Enabled then
Checked := TPeDumpChild(ActiveMDIChild).UnmangleNames
else
Checked := False;
end;
end;
procedure TMainForm.UnmangleNames1Execute(Sender: TObject);
begin
with TPeDumpChild(ActiveMDIChild) do
begin
UnmangleNames := not UnmangleNames;
UnmangleNames1.Checked := UnmangleNames;
end;
end;
procedure TMainForm.SelectAll1Update(Sender: TObject);
begin
TAction(Sender).Enabled := (Screen.ActiveControl is TListView) or
(Screen.ActiveControl is TRichEdit);
end;
procedure TMainForm.Find1Update(Sender: TObject);
begin
TAction(Sender).Enabled := TFindTextForm.CanExecuteFind;
end;
procedure TMainForm.Find1Execute(Sender: TObject);
begin
ShowFindDialog(Screen.ActiveControl as TListView);
end;
procedure TMainForm.CoolBar1Resize(Sender: TObject);
begin
D4FixCoolBarResizePaint(Sender);
end;
initialization
OleInitialize(nil);
finalization
OleUninitialize;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -