Haki

Utwórz program zakładający hak przechwytujący globalnie próbę zamknięcia dowolnego okna za pomocą skrótu klawiszowego Alt+F4.

  1. Utwórz bibliotekę DLL eksportującą funkcje zakładające i zdejmujące hak typy WH_KEYBORD
  2. Zaimplementuj procedurę haka wychwytującą wciśnięcie klawisza F4 (VK_F4) i jednoczesne wciśnięcie lewego klawisza Alt (29 bit argumentu lParam)
  3. Utwórz program, który ładuje bibliotekę DLL i zakłada hak globalny.

Przydatne funkcje:

  • SetWindowsHookEx - instaluje hak
    HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId);
  • UnhookWindowsHookEx - usuwa hak
    BOOLUnhookWindowsHookEx(HHOOK hhk); 
  • KeyboardProc callback function
    LRESULT KeyboardProc(int code, WPARAM wParam, LPARAM lParam); 
  • CallNextHookEx - przesyła informacje do kolejnego haka w kolejce
    LRESULT CallNextHookEx(HHOOK  hhk, int    nCode, WPARAM wParam, LPARAM lParam);

Utwórz program zakładający dwa haki pozwalające rejestrować i odtwarzać wykonane w systemie akcje.

  1. Utwórz bibliotekę DLL eksportującą funkcje zakładające i zdejmujące hak typy WH_JOURNALRECORD. Procedura haka (JournalRecordProc) wraz z akcją HC_ACTION dostarcza strukturę EVENTMSG, którą procedura powinna zachować np. w kolekcji vector z STL.
  2. Wyeksportuj z biblioteki funkcję zakładającą hak typu WH_JOURNALPLAYBACK. Procedura haka (JournalPlaybackProc) odtwarza akcje zapamiętane przez procedurę haka zapisującego. Dla akcji HC_GETNEXT należy podstawić zawartość odtwarzanej akcji do struktury EVENTMSG wskazywanej przez akgumrnt lParam a procedura powinna zwrócić odstęp czasu po jakim akcja ma być odtworzona.
  3. Utwórz program, który ładuje bibliotekę DLL i uruchamia nagrywanie po wciśnięciu klawisza F11 zaś uruchamia odtwarzanie po wciśnięciu klawisza F12.

Przydatne funkcje:

  • GetTickCount ilość milisekund od startu systemu
    DWORD WINAPI GetTickCount(void);