怎么用户按下键盘的信息

如何用户按下键盘的信息
我现在希望获取键盘的全部输入信息,并且要知道是哪个键被按下,具体方法是用hook

PKBDLLHOOKSTRUCT   p   =   (PKBDLLHOOKSTRUCT)   lParam;
        switch   (wParam){
case   WM_KEYDOWN:  
case   WM_SYSKEYDOWN:
                  case   WM_KEYUP:  
case   WM_SYSKEYUP:      
                  p-> scanCode
                  p-> vkCode
}
获取里面的vkCode,scanCode来区分,
现在问题是我发现大键盘和小键盘的Enter键获取的信息完全相同,还有就是当Num   Lock键没有按下的情况小键盘page   up   ,home等键的信息和page   up,home等键的信息也是完全相同,请问有什么方法能区分到底按了那个键吗?


------解决方案--------------------
还有就是当Num Lock键没有按下的情况小键盘page up ,home等键的信息和page up,home等键的信息不是相同的,看一下LPARAM 中的值是不一样的,楼主可以仔细研究一下,