1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| program BackForwardHook;
uses Windows, Messages;
const szClassname = 'BackForwardHook';
function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): lresult; stdcall; begin Result := 0;
case uMsg of WM_CREATE: begin RegisterHotKey(wnd,4052007,MOD_ALT xor MOD_CONTROL,39); RegisterHotKey(wnd,4052008,MOD_ALT xor MOD_CONTROL,37); end; WM_DESTROY: begin UnRegisterHotKey(wnd,4052007); UnRegisterHotKey(wnd,4052008); PostQuitMessage(0); end; WM_HOTKEY: case wp of 4052007: begin mouse_event($0080, 0, 0, $0002, 0); mouse_event($0100, 0, 0, $0002, 0); end;
4052008: begin mouse_event($0080, 0, 0, $0001, 0); mouse_event($0100, 0, 0, $0001, 0); end;
end; else Result := DefWindowProc(wnd, uMsg, wp, lp); end; end;
var wc : TWndClassEx = ( cbSize : SizeOf(TWndClassEx); lpfnWndProc : @WndProc; lpszClassName : szClassname; ); msg : TMsg; aWnd : HWND;
begin if(RegisterClassEx(wc) = 0) then exit; aWnd := CreateWindowEx(0, szClassname, nil, 0, 0 ,0, 0, 0, 0, 0, 0, nil); while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end; ExitCode := msg.wParam; end. |