一直用键盘玩kof,上的是网上对战平台。kof98用键盘超不爽,于是想自己写个软件,可以设置‘宏’一样的功能。利用Hook技术,监视键盘事件,只要发现按下的是我设置的热键,自动向目标窗口发键盘消息。我用的网络对战平台是:
ArcLive! [Powered by Www.ArcLive.Com.Cn]用 ::FindWindow 获取窗口句柄后向它发送键盘按键消息:
HWND hWnd=::FindWindow(NULL," ArcLive! [Powered by Www.ArcLive.Com.Cn]");
if(hWnd != NULL)
{
if(wParam == 78)
{
::PostMessage(hWnd,WM_KEYDOWN,68,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,70,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,68,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,83,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,74,0);
}
}
上面是一组游戏角色发大绝的按键。
完成的功能就是:当按下 N 时,向游戏窗口依次发送 D F D S J但无论用 PostMessage 还是 SendMessage 都无反应。人物一动不动。但在游戏的一个Edit Control(说话用的)里按下 N 时,后面会自动连续输入 DFDSJ。
也就是说对edit控件有效。为什么啊?游戏时人物动作不接受我的按键消息?是游戏自身对我发的消息屏蔽掉了吗?
我又试着对单机游戏kof测试了一下:Kawaks 1.48 - The King of Fighters '97 Plus (bootleg)发现只要我按下 N ,游戏自动弹出MessageBox _________
|Kawaks |
| |
| Key |
| |
|确定 |
|_________|似乎对我的PostMessage进行了拦截。 失败!望指出对游戏窗口发按键消息为什么不成功??以及怎样才能成功??谢谢。
ArcLive! [Powered by Www.ArcLive.Com.Cn]用 ::FindWindow 获取窗口句柄后向它发送键盘按键消息:
HWND hWnd=::FindWindow(NULL," ArcLive! [Powered by Www.ArcLive.Com.Cn]");
if(hWnd != NULL)
{
if(wParam == 78)
{
::PostMessage(hWnd,WM_KEYDOWN,68,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,70,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,68,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,83,0);
Sleep(55);
::PostMessage(hWnd,WM_KEYDOWN,74,0);
}
}
上面是一组游戏角色发大绝的按键。
完成的功能就是:当按下 N 时,向游戏窗口依次发送 D F D S J但无论用 PostMessage 还是 SendMessage 都无反应。人物一动不动。但在游戏的一个Edit Control(说话用的)里按下 N 时,后面会自动连续输入 DFDSJ。
也就是说对edit控件有效。为什么啊?游戏时人物动作不接受我的按键消息?是游戏自身对我发的消息屏蔽掉了吗?
我又试着对单机游戏kof测试了一下:Kawaks 1.48 - The King of Fighters '97 Plus (bootleg)发现只要我按下 N ,游戏自动弹出MessageBox _________
|Kawaks |
| |
| Key |
| |
|确定 |
|_________|似乎对我的PostMessage进行了拦截。 失败!望指出对游戏窗口发按键消息为什么不成功??以及怎样才能成功??谢谢。
解决方案 »
- SetTextColor(hMemDC,RGB(255,0,255));//设置字体颜色为什么不行?
- VC2008如何恢复默认界面?
- 深入浅出MFC第2版
- <<<高分求解 >>>如何改变COMBO的字体及字体大小,十万火急,明天上午交活了!!!谢谢各位了!!!!拜托,拜托再拜托了!!!
- 引用dll时出错,请帮忙解决。也许很简单,却能救我命,谢谢!(10分)
- 请教edit和button的菜鸟问题(50*2)
- MFC非模态对话框MoveWindow或SetWindowPos后ListBox的滚动条不显示
- 如何编程获得远程计算机某一文件的信息,如:版本,大小等等!
- 一个SDK初学者很容易得分的问题,关于DialogBox初始化的问题...
- MFC中怎么使用Tab控件的垂直属性(修改竖着显示为横着显示)
- 你知道特价空间网免费2G全能空间吗?
- sql server 查询结果怎么保存? VC
可能输入是用directinput,而不是键盘消息。
这样一定不会拦截掉了。搞了几天了,还没有成功。郁闷。总感觉大体思路上不对。DLL里的回调函数是向我的程序发HM_KEY消息,然后我又要向游戏发消息。貌似还是从外部发的消息。搞不定了,希望哪位能具体说一下DLL和我的程序应该怎么写。只要大体上给个步骤就行了。希望各位百忙之中帮帮忙! 谢谢了!
以后再来研究这个问题吧。结贴!