hook "madCollection"

0

Cyz ktoś z was umie programować (zakładać hooki w madCoolection)? Mam otóż taki problem. Chce przechwycić wykonywana przez windows explorer funkcje kopiowania, usuwania. SHFileOperationW to jest ta funkcja. Zrobiłem bibliotekę i jest problem bo ona (przechwycenie) podaje zamiast danych jakies dziwne znaki . sadze ze chodzi tu o konwersje. oto kod biblioteki:

library Project2;
{$IMAGEBASE $57800000}

uses
  Windows,
  madCodehook;
type
  TSHFileOpStruct = record
Wnd : HWND;
wFunc : UINT;
pFrom : array [0..MAX_PATH] of widechar;
pTo : array [0..MAX_PATH] of widechar;
fFlags : pointer;
fAnyOperationsAborted : bool;
hNameMappings : Pointer;
lpszProgressTitle : array [0..MAX_PATH] of widechar;
end;
SHFileOpStruct=TSHFileOpStruct;
TRAP = record
      IDrap: Integer;
      PARa: array [0..MAX_PATH] of char;
      PARb: array [0..MAX_PATH] of char;
      PARc: array [0..MAX_PATH] of char;
      PARd: array [0..MAX_PATH] of char;
      PARe: array [0..MAX_PATH] of char;
      PARf: array [0..MAX_PATH] of char;
      PARg: array [0..MAX_PATH] of char;
      PARx: integer;
      PARz: integer;
   end;

var
  SHFileOperationW : function (const lpFileOp: SHFileOpStruct): Integer; stdcall;


  function SHFileOperationWCallback(const lpFileOp: SHFileOpStruct): Integer; stdcall;
  var
  SHFileOpStruct : TSHFileOpStruct;
  RAP:TRAP;
  arrChW  : array [0..MAX_PATH] of widechar;
  begin
  result := SHFileOperationW(lpFileOp);
  GetModuleFileNameW(0,arrChW,MAX_PATH);
  WideToAnsi(arrChW,rap.PARe);
  WideToAnsi(SHFileOpStruct.pFrom,rap.PARa);
  WideToAnsi(SHFileOpStruct.pTo,rap.PARb);
  WideToAnsi(SHFileOpStruct.lpszProgressTitle,rap.PARc);
  rap.PARx := SHFileOpStruct.wFunc;
  rap.IDrap := 2;
  SendIpcMessage(pchar('RAP'),@RAP,SizeOf(TRAP));
  RenewHook(@SHFileOperationW);
  end;

  begin
  HookAPI('shell32.dll', 'SHFileOperationW', @SHFileOperationWCallback, @SHFileOperationW);

end.

prosze o pomoc

0

Jesli chcesz przechwycic operacje kopiowania etc. standardowe dla windows to lepiej pomyslec nad oprogramowaniem interfejsu ICopyHook (przyklad dolaczony do delphi, chyba od d3).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.