WinIo.vxd 驱动在机器上是安装成功了,但是模拟按键非常不稳定,跪求驱动高手解围,非常紧急
大家好,我是熊猫媛元,这个问题拖了一个星期了,实在迫不得已上了论坛,希望有高手解围.非常感谢..
我在程序项目工程和Debug里都装了Winio.vxd,WinIo.dll,WinIo.sys,WinIo.lib,WinIo.h
然后我写了一个类
CKeyboard::~CKeyboard(void)
{
}
void CKeyboard::KBCWait4IBE()
{
DWORD dwVal=0;
do
{
GetPortVal(KBC_CMD,&dwVal,1);
}
while((&dwVal)&&(0x2)==0);
}
void CKeyboard::KEY_DOWN(int vk_in)
{
int myscancode;
myscancode=MapVirtualKey(byte(vk_in),0);
KBCWait4IBE();
//SetPortVal(KBC_CMD,0xD2,1);
//KBCWait4IBE();
//SetPortVal(KBC_DATA,0xE2,1);
//KBCWait4IBE();
SetPortVal(KBC_CMD,0xD2,1);
KBCWait4IBE();
SetPortVal(KBC_DATA,myscancode,1);
}
void CKeyboard::KEY_UP(int vk_in)
{
int myscancode;
myscancode=MapVirtualKey(byte(vk_in),0);
KBCWait4IBE();
//SetPortVal(KBC_CMD,0xD2,1);
//KBCWait4IBE();
//SetPortVal(KBC_DATA,0xE0,1);
//KBCWait4IBE();
SetPortVal(KBC_CMD,0xD2,1);
KBCWait4IBE();
SetPortVal(KBC_DATA,(myscancode|0x80),1);
}
void CKeyboard::KeyboardInit()
{
bool br1;
br1=InstallWinIoDriver("WinIo.sys");
if(br1==false)
{
MessageBox(NULL,"安装IO_device失败,程序自动关闭,请您不用担心~","XD友情提示2",MB_OK);
RemoveWinIoDriver();
ShutdownWinIo();
exit(0);
}
else
{
MessageBox(NULL,"安装IO_device成功","XD友情提示1",MB_OK);
}
br1=InitializeWinIo();
if(br1==true)
{
MessageBox(NULL,"InitializeWinIo成功~","XD友情提示2",MB_OK);
}
else
{
MessageBox(NULL,"InitializeWinIo不成功~","XD友情提示2",MB_OK);
}
}
//移除驱动
void CKeyboard::KeyboardRemoveWinIo()
{
RemoveWinIoDriver();
ShutdownWinIo();
}
................................................
................................................
//调用这个类,每隔1秒,打印字符a键
void main()
{
CKeyboard keyboard
keyboard.KeyboardInit();
while(true)
{
Sleep(1000);
Keyboard.KEYDOWN(65)
Sleep(150);
Keyboard.EY_UP(65);
Sleep(500);
}
}
虽然驱动安装没有问题,字符可以在记事本上打印
但是问题在于在我的机器上打印非常非常的不稳定,不是隔一秒打印一个a,秒甚至等了很长的时间才打印1个a..
而在另一个同事的机器上打印非常顺畅和连续.
我非常的困惑,在网上也搜了资料,WinIo.vxd是有些接触底层的,跟硬件有些关系,希望能够集思广义,能有人能说明一下具体的原由,还请高手们提出一些具体的解决方案.
还有我想再问一个问题,是不是按键精灵用了WinIo.vxd
麻烦大伙了,再次谢谢