#include <windows.h>
#include <stdio.h>
#include "winio.h"
//加上lib的引用
#pragma comment(lib,"WinIo64.lib")
void KbcWait4IBE()
{
DWORD dwRegVal=0;
do
{
GetPortVal(0x64,&dwRegVal,1);
}
while(dwRegVal & 0x2);
}
void KeyPress(DWORD KCode)
{
KbcWait4IBE();//Wait for KBC input buffer empty
SetPortVal(0x64,0xD2,1);//Send data back to the system command
KbcWait4IBE();//Wait for KBC input buffer empty
SetPortVal(0x60,MapVirtualKey(KCode,0),1);//Send the key down scancode
Sleep(10);
KbcWait4IBE();//Wait for KBC input buffer empty
SetPortVal(0x64,0xD2,1);//Send data back to the system command
KbcWait4IBE();//Wait for KBC input buffer empty
SetPortVal(0x60,(MapVirtualKey(KCode,0) | 0x80),1);//Send the key up scancode
}
void main()
{
bool bResult;
// Call InitializeWinIo to initialize the WinIo library.
bResult = InitializeWinIo();
if (bResult)
{
Sleep(5000);
printf("supposed key down");
KeyPress(73);
Sleep(5000);
// When you're done using WinIo, call ShutdownWinIo
ShutdownWinIo();
}
else
{
printf("Error during initialization of WinIo.\n");
exit(1);
}
}