📄 shareunit.pas
字号:
var
i: Integer;
begin
Result := 0;
if (Index < 0) or (Index > 9) or not IsWindow(RegisterHandle) then
Exit;
for i := 1 to 100 do
begin
Result := Cardinal(SendMessage(RegisterHandle, WM_USER, 25, Index));
if Result <> Cardinal(-1) then
Break
else
if Index = 2 then
Break;
end;
end;
function EPEWindowFunction(Index: Integer; aHwnd: HWND): Boolean;
var
i, MessageResult: Integer;
begin
Result := False;
if (Index < 0) or (Index > 10) or not IsWindow(aHwnd) or not IsWindow(RegisterHandle) then
Exit;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, Index * 10 + 35, aHwnd);
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPEGetMem(Size: Integer): Pointer;
var
i, MessageResult: Integer;
begin
Result := nil;
if (Size <= 0) or not IsWindow(RegisterHandle) then
Exit;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 145, Size);
if (MessageResult <> -1) and (MessageResult <> 0) then
begin
Result := Pointer(MessageResult);
Break;
end;
end;
end;
function EPEFreeMem(Buf: Pointer): Boolean;
var
i, MessageResult: Integer;
begin
Result := False;
if not Assigned(Buf) or not IsWindow(RegisterHandle) then
Exit;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 155, Integer(Buf));
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPEZeroMemory(Buf: Pointer; Size: Integer): Boolean;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := False;
if not Assigned(Buf) or (Size <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 0;
P.ValueSize := Size;
P.ValueBuf := Buf;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 165, Integer(@P));
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPEFillMemory(Buf: Pointer; Size: Integer; Fill: Byte): Boolean;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := False;
if not Assigned(Buf) or (Size <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 1;
P.ValueSize := Size;
P.ValueBuf := Buf;
P.PassSize := Fill;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 165, Integer(@P));
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPECopyMemory(Destination, Source: Pointer; Size: Integer): Boolean;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := False;
if not Assigned(Destination) or not Assigned(Source) or (Size <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 2;
P.PassBuf := Destination;
P.ValueBuf := Source;
P.ValueSize := Size;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 165, Integer(@P));
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPEMoveMemory(Destination, Source: Pointer; Size: Integer): Boolean;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := False;
if not Assigned(Destination) or not Assigned(Source) or (Size <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 3;
P.PassBuf := Destination;
P.ValueBuf := Source;
P.ValueSize := Size;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 165, Integer(@P));
if MessageResult = 1 then
begin
Result := True;
Break;
end;
end;
end;
function EPESystemStr(Index: Integer): string;
var
i, MessageResult: Integer;
begin
Result := '';
if (Index < 0) or (Index > 5) or not IsWindow(RegisterHandle) then
Exit;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, 175, Index);
if (MessageResult <> -1) and (MessageResult <> 0) then
begin
Result := PChar(MessageResult);
Break;
end;
end;
end;
procedure Compress(InBuf: Pointer; InBytes: Integer; var OutBuf: Pointer; var OutBytes: Integer; Password: string = '');
var
P: TUserRecord;
i, MessageResult: Integer;
begin
OutBuf := nil;
OutBytes := 0;
if not Assigned(InBuf) or (InBytes <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 0;
P.ValueSize := InBytes;
P.ValueBuf := InBuf;
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
try
GetMem(OutBuf, P.ValueSize);
OutBytes := P.ValueSize;
CopyMemory(OutBuf, P.ValueBuf, P.ValueSize);
except
OutBuf := nil;
OutBytes := 0;
end;
Break;
end;
end;
end;
procedure Decompress(InBuf: Pointer; InBytes: Integer; var OutBuf: Pointer; var OutBytes: Integer; Password: string = '');
var
P: TUserRecord;
i, MessageResult: Integer;
begin
OutBuf := nil;
OutBytes := 0;
if not Assigned(InBuf) or (InBytes <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 1;
P.ValueSize := InBytes;
P.ValueBuf := InBuf;
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
try
GetMem(OutBuf, P.ValueSize);
OutBytes := P.ValueSize;
CopyMemory(OutBuf, P.ValueBuf, P.ValueSize);
except
OutBuf := nil;
OutBytes := 0;
end;
Break;
end;
end;
end;
function StringCompress(SourceString: string; Password: string = ''; HFlag: Boolean = True): string;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := '';
if (SourceString = '') or not IsWindow(RegisterHandle) then
Exit;
if HFlag then
P.Bz := 10
else
P.Bz := 20;
P.ValueSize := Length(SourceString);
P.ValueBuf := @SourceString[1];
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
{try
SetLength(Result, P.ValueSize);
CopyMemory(@Result[1], P.ValueBuf, P.ValueSize);
except
Result := '';
end;}
Result := PChar(P.ValueBuf);
Break;
end;
end;
end;
function StringDecompress(SourceString: string; Password: string = ''; HFlag: Boolean = True): string;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := '';
if (SourceString = '') or not IsWindow(RegisterHandle) then
Exit;
if HFlag then
P.Bz := 11
else
P.Bz := 21;
P.ValueSize := Length(SourceString);
P.ValueBuf := @SourceString[1];
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
{try
SetLength(Result, P.ValueSize);
CopyMemory(@Result[1], P.ValueBuf, P.ValueSize);
except
Result := '';
end;}
Result := PChar(P.ValueBuf);
Break;
end;
end;
end;
procedure Encrypt(InBuf: Pointer; InBytes: Integer; var OutBuf: Pointer; var OutBytes: Integer; Password: string = '');
var
P: TUserRecord;
i, MessageResult: Integer;
begin
OutBuf := nil;
OutBytes := 0;
if not Assigned(InBuf) or (InBytes <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 100;
P.ValueSize := InBytes;
P.ValueBuf := InBuf;
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
try
GetMem(OutBuf, P.ValueSize);
OutBytes := P.ValueSize;
CopyMemory(OutBuf, P.ValueBuf, P.ValueSize);
except
OutBuf := nil;
OutBytes := 0;
end;
Break;
end;
end;
end;
procedure Decrypt(InBuf: Pointer; InBytes: Integer; var OutBuf: Pointer; var OutBytes: Integer; Password: string = '');
var
P: TUserRecord;
i, MessageResult: Integer;
begin
OutBuf := nil;
OutBytes := 0;
if not Assigned(InBuf) or (InBytes <= 0) or not IsWindow(RegisterHandle) then
Exit;
P.Bz := 101;
P.ValueSize := InBytes;
P.ValueBuf := InBuf;
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
try
GetMem(OutBuf, P.ValueSize);
OutBytes := P.ValueSize;
CopyMemory(OutBuf, P.ValueBuf, P.ValueSize);
except
OutBuf := nil;
OutBytes := 0;
end;
Break;
end;
end;
end;
function StringEncrypt(SourceString: string; Password: string = ''; HFlag: Boolean = True): string;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := '';
if (SourceString = '') or not IsWindow(RegisterHandle) then
Exit;
if HFlag then
P.Bz := 110
else
P.Bz := 120;
P.ValueSize := Length(SourceString);
P.ValueBuf := @SourceString[1];
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
{try
SetLength(Result, P.ValueSize);
CopyMemory(@Result[1], P.ValueBuf, P.ValueSize);
except
Result := '';
end;}
Result := PChar(P.ValueBuf);
Break;
end;
end;
end;
function StringDecrypt(SourceString: string; Password: string = ''; HFlag: Boolean = True): string;
var
P: TUserRecord;
i, MessageResult: Integer;
begin
Result := '';
if (SourceString = '') or not IsWindow(RegisterHandle) then
Exit;
if HFlag then
P.Bz := 111
else
P.Bz := 121;
P.ValueSize := Length(SourceString);
P.ValueBuf := @SourceString[1];
P.PassSize := Length(Password);
if P.PassSize > 0 then
P.PassBuf := @Password[1]
else
P.PassBuf := nil;
for i := 1 to 100 do
begin
MessageResult := SendMessage(RegisterHandle, WM_USER, HInt, Integer(@P));
if MessageResult = 1 then
begin
{try
SetLength(Result, P.ValueSize);
CopyMemory(@Result[1], P.ValueBuf, P.ValueSize);
except
Result := '';
end;}
Result := PChar(P.ValueBuf);
Break;
end;
end;
end;
initialization
GetRegisterHandle;
finalization
if Assigned(RegisterStrings) then
RegisterStrings.Free;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -