在键盘钩子中对lParam进行Marshal.PtrToStructure类型转换时发生“内存保护”错误。
时间:2011-12-18
来源:互联网
键盘信息类:
[StructLayout(LayoutKind.Sequential)]
public struct KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
在键盘钩子函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)中进行
KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
时出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”错误。
奇怪的是,在try块中出现错误时,它不是转到catch块中抛出异常,而是直接跳到Main()函数的Application.Run()那里。
另,安装钩子是成功的。
为什么会出现这种情况,怎么解决?请高手解答!
[StructLayout(LayoutKind.Sequential)]
public struct KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
在键盘钩子函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)中进行
KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
时出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”错误。
奇怪的是,在try块中出现错误时,它不是转到catch块中抛出异常,而是直接跳到Main()函数的Application.Run()那里。
另,安装钩子是成功的。
为什么会出现这种情况,怎么解决?请高手解答!
作者: wwwcyq 发布时间: 2011-12-18
自己顶一下
作者: wwwcyq 发布时间: 2011-12-18
自己顶一下
作者: wwwcyq 发布时间: 2011-12-18
或者说,在全局钩子中,如何获取键盘按下的是哪个键值?
hKeyboardHook = SetWindowsHookEx(13,KeyboardHookProc,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
在KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) 过程,如何取得按下的键值?
hKeyboardHook = SetWindowsHookEx(13,KeyboardHookProc,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
在KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) 过程,如何取得按下的键值?
作者: wwwcyq 发布时间: 2011-12-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28