Writing /home/grochu/public_html/wiki/data/cache/6/65d178aff88e0d7fefdf0d9970a1ac07.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/7/70131137adc687fbe222fe72cb96a213.xhtml failed
Haki
Zadanie 1
Utwórz program zakładający hak przechwytujący globalnie próbę zamknięcia dowolnego okna za pomocą skrótu klawiszowego Alt+F4.
- Utwórz bibliotekę DLL eksportującą funkcje zakładające i zdejmujące hak typy WH_KEYBORD
- Zaimplementuj procedurę haka wychwytującą wciśnięcie klawisza F4 (VK_F4) i jednoczesne wciśnięcie lewego klawisza Alt (29 bit argumentu
lParam) - 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);
- CallNextHookEx - przesyła informacje do kolejnego haka w kolejce
LRESULT CallNextHookEx(HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam);
Zadanie 2
Utwórz program zakładający dwa haki pozwalające rejestrować i odtwarzać wykonane w systemie akcje.
- Utwórz bibliotekę DLL eksportującą funkcje zakładające i zdejmujące hak typy WH_JOURNALRECORD. Procedura haka (JournalRecordProc) wraz z akcją
HC_ACTIONdostarcza strukturę EVENTMSG, którą procedura powinna zachować np. w kolekcji vector z STL. - Wyeksportuj z biblioteki funkcję zakładającą hak typu
WH_JOURNALPLAYBACK. Procedura haka (JournalPlaybackProc) odtwarza akcje zapamiętane przez procedurę haka zapisującego. Dla akcjiHC_GETNEXTnależy podstawić zawartość odtwarzanej akcji do struktury EVENTMSG wskazywanej przez akgumrntlParama procedura powinna zwrócić odstęp czasu po jakim akcja ma być odtworzona. - 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);