urikus Гость
|
Добавлено: Пт Окт 25 2002 10:07 Заголовок сообщения: Проблемы с установкой хука в C++ Builder 5 |
|
|
Нужно сделать ловушку, кот воспроизводить ранее записанные сообщения(). Как я понимаю надо создать ловушку и отправлять сообщения хуку JournalPlayback. Только я не могу назначить проге ловушку JournalPlayback. Может что не так делаю.. Вот код... Мне нужно сделать ловушку без использования dll. Ф-ция SetWindowsHookEx возвращает NULL, не может установить ловушку... Может проблема в описании PlayHook ?
LRESULT CALLBACK PlayHook(int nCode, WPARAM wParam, LPARAM lParam) { static EVENTMSG em; long old=-1; static flag=0; DWORD dwRead; MSG Msg;
switch(nCode) { case HC_GETNEXT: *(EVENTMSG *)lParam = em; if (flag) return 0; flag = 1; if (old == -1 && em.time) { old = em.time; return 0; } return em.time-old; break; case HC_SKIP: if (old != -1 && em.time) old = em.time; ReadFile(hFile, &em, sizeof(em), &dwRead, NULL); flag = 0; if (dwRead != sizeof(em)) { flag = 0; old = -1; return 0; } break; } return CallNextHookEx(jph, nCode, wParam, lParam); } //--------------------------------------------- ------------------------------ void __fastcall TForm1::FormCreate(TObject *Sender) { HINSTANCE hInstance; HANDLE handle; HWND hwnd; hwnd = FindWindow(NULL,"Form1"); handle = Application->Handle; hInstance = (HINSTANCE)Application->Handle; hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); jph = SetWindowsHookEx(WH_JOURNALPLAYBACK, (HOOKPROC)PlayHook,hwnd,0); } |
|