下面这段代码模拟按键的
MyKeyDown(65); //按A键
MyKeyUp(65); //释放A键
这样调用没问题但按“SHIFT”键就出问题了像下面这样调用就会键盘鼠标都动不了
MyKeyDown(65); //按A键
sleep(20);
MyKeyDown(16); //按SHIFT键
sleep(20);
MyKeyUp(16); //释放SHIFT --这里卡死了
sleep(20);
MyKeyUp(65); //释放A键
const
KBC_KEY_CMD = $64;
KBC_KEY_DATA = $60;
procedure KBCWait4IBE; //等待键盘缓冲区为空
var
dwVal:DWord;
begin
repeat
GetPortVal($64,@dwVal,1);
until (dwVal and $2)=0;
end;//键盘==========================================
procedure MyKeyDown(vKeyCoad:Integer);
var
btScancode:DWord;
begin
btScancode:=MapVirtualKey(vKeyCoad, 0);
KBCWait4IBE;
SetPortVal($64, $D2, 1);
KBCWait4IBE;
SetPortVal($60, btScancode, 1);
end;procedure MyKeyUp(vKeyCoad:Integer);
var
btScancode:DWord;
begin
btScancode:=MapVirtualKey(vKeyCoad, 0);
KBCWait4IBE;
SetPortVal($64, $D2, 1);
KBCWait4IBE;
SetPortVal($64, (btScancode or $80), 1);
end;
MyKeyDown(65); //按A键
MyKeyUp(65); //释放A键
这样调用没问题但按“SHIFT”键就出问题了像下面这样调用就会键盘鼠标都动不了
MyKeyDown(65); //按A键
sleep(20);
MyKeyDown(16); //按SHIFT键
sleep(20);
MyKeyUp(16); //释放SHIFT --这里卡死了
sleep(20);
MyKeyUp(65); //释放A键
const
KBC_KEY_CMD = $64;
KBC_KEY_DATA = $60;
procedure KBCWait4IBE; //等待键盘缓冲区为空
var
dwVal:DWord;
begin
repeat
GetPortVal($64,@dwVal,1);
until (dwVal and $2)=0;
end;//键盘==========================================
procedure MyKeyDown(vKeyCoad:Integer);
var
btScancode:DWord;
begin
btScancode:=MapVirtualKey(vKeyCoad, 0);
KBCWait4IBE;
SetPortVal($64, $D2, 1);
KBCWait4IBE;
SetPortVal($60, btScancode, 1);
end;procedure MyKeyUp(vKeyCoad:Integer);
var
btScancode:DWord;
begin
btScancode:=MapVirtualKey(vKeyCoad, 0);
KBCWait4IBE;
SetPortVal($64, $D2, 1);
KBCWait4IBE;
SetPortVal($64, (btScancode or $80), 1);
end;
GetPortVal($64,@dwVal,1);
until (dwVal and $2)=0;
这里有个循环
这个代码以前看过,兼容性的确不是很好,经常卡死,不知道怎么回事