linklerden birine baktım, o adamda hatalı yapmış,

hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, hInstance, 0);

şöyle olması gerekiyodu

public class KeyboardHook{
private delegate int hookProcDelegate(int nCode, int wParam, ref GlobalKeyboardHookStruct lParam);

private hookProcDelegate myDelegate {get; set;}

public void Hook(){
...........
this.myDelegate = new hookProcDelegate (hookProcDelegate);
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, this.myDelegate, hInstance, 0);
........
}
}

kodları test etmedim direk burda yazdım syntax hatası olabilir. Mantığı anlamışındır umarım.