mfc中模拟键盘控制游戏中的人物动作解决思路

mfc中模拟键盘控制游戏中的人物动作
if(strtemp=="s")
 {
 CWnd *pwnd = FindWindow("MARIO01","加油中国,自强不息!"); //希望找到资源管理器

if(pwnd->GetSafeHwnd()) 

pwnd->ShowWindow(SW_NORMAL); 
 pwnd->SetForegroundWindow(); 
 
keybd_event(90,MapVirtualKey(90,0),0,0);  
keybd_event(90,MapVirtualKey(90,0),KEYEVENTF_KEYUP,0); 
}
这段代码是 当接收到S,模拟键盘上的Z键,游戏人物发射炮弹。但实际中,人物没有任何反应,但是在txt文档中可以不断输出z。同时,如果去掉keybd_event(90,MapVirtualKey(90,0),KEYEVENTF_KEYUP,0); 这一句,游戏中的人物可以连续不断的发射炮弹。这就是说,可以模拟按键一直按下去不动,但是模拟不了按键按一下。还有的说用postmessage,但是在mfc中postmessage只有三个参数,没有第一个句柄的参数,所以我无法指定游戏窗口为当前窗口,无法实现对游戏人物的控制。研究了很久也不知道怎么回事!!求解答!!!
------解决思路----------------------
类似的控制程序我都使用“状态机”模式,动作的每个状态都是被控的,所有的动作均由设计的触发状态决定。一条线的程序不符合面向对象的风格。
------解决思路----------------------
注意两个问题
1. 两个keybd_event之间要加上延时
2. 不同程序判别按键用的方式可能不一样, 有虚拟键代码 或 扫描码 keybd_event 最好两个都写上
------解决思路----------------------
使用 api ::postmessge  not mfc postmessage