问题描述
键盘信息类:[StructLayout(LayoutKind.Sequential)]publicstructKeyBoardHookStruct{publicintvkCode;publicintscanCode;publicintflags;publicinttime;publicintdwExtraInfo;}在键盘钩子函数privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam)中进行KeyBoardHookStructinput=(KeyBoardHookStruct)Marshal.PtrToStructure(lParam,typeof(KeyBoardHookStruct));时出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”错误。奇怪的是,在try块中出现错误时,它不是转到catch块中抛出异常,而是直接跳到Main()函数的Application.Run()那里。另,安装钩子是成功的。为什么会出现这种情况,怎么解决?请高手解答!
解决方案
解决方案二:
自己顶一下
解决方案三:
自己顶一下
解决方案四:
或者说,在全局钩子中,如何获取键盘按下的是哪个键值?hKeyboardHook=SetWindowsHookEx(13,KeyboardHookProc,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);在KeyboardHookProc(intnCode,Int32wParam,IntPtrlParam)过程,如何取得按下的键值?
时间: 2024-10-31 14:28:36