Возможно я что-то не так делаю. Вот весь код:
| Код | var SysHook: HHOOK = 0; Wnd: HWND = 0;
function SysMsgProc(Code: Integer; wParam: Word; lParam: Longint): Longint; stdcall; var State: TKeyboardState; i: Integer; begin CallNextHookEx(SysHook, Code, wParam, lParam); if Code = HC_ACTION then begin Wnd := TMsg(Pointer(lParam)^).hwnd; if (TMsg(Pointer(lParam)^)).message = WM_LBUTTONDOWN then begin GetKeyboardState(State); if (State[VK_CONTROL] and 128) <> 0 then begin i := GetWindowLong(Wnd, GWL_STYLE); asm pushad; mov EAX, i; shr EAX, 6; push 0; jc @IS_PASSWORD; push $39; push EM_SETPASSWORDCHAR; push Wnd; call SendMessage; jmp @FINISH; @IS_PASSWORD: push 0; push EM_SETPASSWORDCHAR; push Wnd; call SendMessage; @FINISH: popad; end; InvalidateRect(Wnd, nil, true); end; end; end; end;
procedure RunStopHook(State: Boolean); export; stdcall; begin if State then SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0) else begin UnhookWindowsHookEx(SysHook); SysHook := 0; end; end;
|
|