游戏:冒险岛 Online代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var Key:Variant;
begin
Timer1.Interval:=strtoint(suiEdit1.text);
Key:=Ord(suiEdit2.Text[1]);
keybd_event(key, 0, 0 , 0);
keybd_event(Key, 0, KEYEVENTF_KEYUP , 0); // key up
end;问题如下:
在记事本和游戏的聊天状态都可以不停的输出字母,为什么在游戏状态时只是偶尔的攻击一次呢
我试过把keybd_event(Key, 0, KEYEVENTF_KEYUP , 0); // key up 去掉之后,可以不停攻击了,
但是不能控制他的时间间隔,而且最重要的是攻击的时候按一下其它任意键,攻击就会停止,除非
再手动按一次攻击键才会继续,郁闷,求高手指教!程序下载地址:http://www.flyso.net/a.exe
procedure TForm1.Timer1Timer(Sender: TObject);
var Key:Variant;
begin
Timer1.Interval:=strtoint(suiEdit1.text);
Key:=Ord(suiEdit2.Text[1]);
keybd_event(key, 0, 0 , 0);
keybd_event(Key, 0, KEYEVENTF_KEYUP , 0); // key up
end;问题如下:
在记事本和游戏的聊天状态都可以不停的输出字母,为什么在游戏状态时只是偶尔的攻击一次呢
我试过把keybd_event(Key, 0, KEYEVENTF_KEYUP , 0); // key up 去掉之后,可以不停攻击了,
但是不能控制他的时间间隔,而且最重要的是攻击的时候按一下其它任意键,攻击就会停止,除非
再手动按一次攻击键才会继续,郁闷,求高手指教!程序下载地址:http://www.flyso.net/a.exe
解决方案 »
- 我这是种什么病毒辣!!!救命!!!!
- 请问怎样将一个integer类型的数据拷贝到 char类型的数组里
- 寻找竖直显示记录的购件....
- 在三层结构中,提交数据后,是否需要刷新数据?
- 关于打印预览的问题(100分)
- try .. except语法如何写?
- 還是excel导入SQL SERVER的問題
- 结果怎么会是这样?请进来看看!!!
- 需要实现能够直接将整个文件夹另存到电脑上
- Delphi5的程序在Delphi6下重新编译出现错误?如何解决?高手请进????????
- 关于对SQL2K数据库连接数的问题(连接效率)
- 初学delphi,请问各位大虾,TActionList中的内容是怎么执行的,什么时候执行,谢谢
因为Windows消息的工作机制是同步的,一个程序的消息队列接收到消息并不触发任何事件,必须程序主动取消息才行。而且连续的相同消息回被合并成一个。
正确的作法是:
在循环中定时调用GetAsyncKeyState,这可以获得键盘的所有键状态,然后根据键状态转入相应的处理过程。
ID的Quake2、Quake3等都是这么处理的。优点是速度快,游戏可以支持任意的组合键,而且这种处理机制对于不同的操作系统都适用(DOS、Windiows、Linux)。
procedure TForm1.Timer1Timer(Sender: TObject);
var Key:Variant;
begin
Timer1.Interval:=strtoint(suiEdit1.text);
Key:=Ord(suiEdit2.Text[1]);
if GetAsyncKeyState(key) <> 0 then //如果该键已经按下执行
keybd_event(key, 0, KEYEVENTF_KEYUP , 0) //松开该键
else //否则
keybd_event(key, 0, 0 , 0) //按下该键
end;
keybd_event(key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); //KEYUP
如果只用keybd_event(key, 0, 0 , 0) 可以实现不断攻击, 但按一下其它任意键就攻击停止了,好像被其它键中断似的,但切换到聊天栏发现还在按键,除非再手动按一次攻击键才会继续