⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shareunit.pas

📁 传世源码可编译的,功能齐全.是学习的好模版,会DELPHI的朋友们也可以自己修改,弄个自己的引擎.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -