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