【发布时间】:2016-10-15 15:41:21
【问题描述】:
在我的具体情况下,我正在尝试创建一个将键盘击键发送到 DosBox(dos-games 模拟器,而不是 windows 命令提示符)的应用程序。
我尝试使用 SendKeys 执行此操作,但这不起作用,因为 DosBox 不是处理 windows 消息的应用程序(一个例外告诉我)。
目前我正在尝试使用键盘挂钩来做到这一点,如下所示: 第一种方法是接收钩子击键并将它们传递到下一个应用程序(如this example)
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
return CallNextHookEx(hookId, nCode, wParam, lParam);
}
private void GenerateKeyPress()
{
int vkCode = (int)Keys.Up; //My chosen key to be send to dosbox
IntPtr lParam = new IntPtr(vkCode);
IntPtr wParam = new IntPtr(255);
CallNextHookEx(hookId, 0, wParam, lParam);
}
CallNextHookEx() 函数调用会引发访问冲突异常。
在这里我需要考虑什么?
【问题讨论】: