Цитата:
Сообщение от NumLock
я так делал:
Код:
hCallWndProc:=SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, HInstance, 0);
function CallWndProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
if nCode=HC_ACTION then
HookHandle(PCWPStruct(lParam)^.message, PCWPStruct(lParam)^.hwnd, PCWPStruct(lParam)^.wParam, PCWPStruct(lParam)^.lParam);
Result:=CallNextHookEx(0, nCode, wParam, lParam);
end;
procedure HookHandle(MessageId: Cardinal; hWnd: HWND; wParam: WPARAM; lParam: LPARAM);
var
TopLeft: TPoint;
region: HRGN;
buffsize: DWORD;
buff: PRgnData;
begin
case MessageId of
WM_PAINT: begin
region:=CreateRectRgn(0, 0, 0, 0);
try
if GetUpdateRgn(hWnd, region, False)<>ERROR then
begin
TopLeft.X:=0;
TopLeft.Y:=0;
if ClientToScreen(hWnd, TopLeft) then
begin
buffsize:=GetRegionData(region, 0, nil);
if buffsize>0 then
begin
buff:=GetMemory(buffsize);
try
if GetRegionData(region, buffsize, buff)<>0 then
begin
// TopLeft.X+buff.rdh.rcBound.Left
// TopLeft.Y+buff.rdh.rcBound.Top
// TopLeft.X+buff.rdh.rcBound.Right
// TopLeft.Y+buff.rdh.rcBound.Bottom
end;
finally
FreeMemory(buff);
end;
end;
end;
end;
finally
if region<>0 then DeleteObject(region);
end;
end;
end;
end;
|
Странно, после того как скомпилил код и запустил, нагрузка на ЦП выросла до 100% + прога сожрала 2гб озу, в итоге вылетели все окна )
TopLeft.X и TopLeft.Y, как я понимаю это размер окна, но где его координаты?