winxpsp2下测试通过!
procedure SetKey(SCanCode: byte); begin asm //无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0 @Loop1: in al, $64 and al, 01b jnz @Loop1 //向$64端口写命令 mov al, $D2//写键盘输出缓存命令 out $64, al //无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0 @Loop2: in al, $64 and al, 01b jnz @Loop2 //向$60端口写参数 mov al, SCanCode out $60, al end; end; 模拟非扩展键: SetKey($1F);//make codes Sleep(25); SetKey($9F);//break code 模拟扩展键: SetKey($E0);//因为这是一个扩展键 SetKey($4B);//make codes Sleep(25); SetKey($E0);//因为这是一个扩展键 SetKey($CB);//break code 模拟鼠标的类似。 不管什么游戏,SendInput不太可能被屏蔽! 不建议采用winio自身的SetPortVal函数,这样效率太慢,而是直接用汇编写端口,当载入winio驱动后就可以直接操作端口了。 载入驱动:InitializeWinIo 卸下驱动:ShutdownWinIo |