汇编:模拟键盘按键的小程序,有点问题
_SetKeyproc@S;参数@S==键盘扫描码;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...
_SetKey proc @S
;参数@S == 键盘扫描码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0
@loop1:
in al,64h
and al,010b
jnz @loop1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;向64端口写命令,模拟键按下
mov al, 0D2h ;写键盘输出缓存命令
out 64h, al
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0
@Loop2:
in al, 64h
and al, 10b
jnz @Loop2
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;向$60端口写参数,模拟键松开
mov eax, @S
out 60h, al
ret
_SetKey endp
这个子程序没反应,不知道哪里错了
当然这个是在有操作权限的前提下调用的
如果改成直接从60h端口写入数据0ffH(重置键盘),键盘灯有反复。
不要嫌我分少,我没分了
windows xp
我是在定时器消息里调用的 展开
;参数@S == 键盘扫描码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0
@loop1:
in al,64h
and al,010b
jnz @loop1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;向64端口写命令,模拟键按下
mov al, 0D2h ;写键盘输出缓存命令
out 64h, al
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;无论向0x60,还是0x64写东西前都要等状态寄存器OBF变0
@Loop2:
in al, 64h
and al, 10b
jnz @Loop2
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;向$60端口写参数,模拟键松开
mov eax, @S
out 60h, al
ret
_SetKey endp
这个子程序没反应,不知道哪里错了
当然这个是在有操作权限的前提下调用的
如果改成直接从60h端口写入数据0ffH(重置键盘),键盘灯有反复。
不要嫌我分少,我没分了
windows xp
我是在定时器消息里调用的 展开
1个回答
展开全部
void KeyPress(BYTE code)
{
_asm
{
LOOP1:
in al, 0x64 ;//读端口状态
and al, 10b ;//检测OBF状态位
jnz LOOP1 ;//缓冲区满时继续等待
mov al, 0xD2 ;//写键盘缓冲命令
out 0x64, al ;//向0x60端口发送命令
LOOP2:
in al, 0x64 ;//读端口状态
and al, 10b ;//检测OBF状态位
jnz LOOP2 ;//缓冲区满时继续等待
mov al, code ;//命令参数即扫描码
out 0x60, al ;//向0x60端口写命令参数
}
}
以前写的能用。
如果你是在写游戏外挂,可能是IO权限又被反外挂程序改回去了。
{
_asm
{
LOOP1:
in al, 0x64 ;//读端口状态
and al, 10b ;//检测OBF状态位
jnz LOOP1 ;//缓冲区满时继续等待
mov al, 0xD2 ;//写键盘缓冲命令
out 0x64, al ;//向0x60端口发送命令
LOOP2:
in al, 0x64 ;//读端口状态
and al, 10b ;//检测OBF状态位
jnz LOOP2 ;//缓冲区满时继续等待
mov al, code ;//命令参数即扫描码
out 0x60, al ;//向0x60端口写命令参数
}
}
以前写的能用。
如果你是在写游戏外挂,可能是IO权限又被反外挂程序改回去了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询