/********************************************************************** * OemKeyScan (KEYBOARD.128) */ DWORD WINAPI OemKeyScan16(WORD wOemChar) { return OemKeyScan( wOemChar ); }
//----------------------------------------------------------- void PushAKey(CHAR k) { bool doshift=false; bool doalt=false; bool doctrl=false; DWORD vks=VkKeyScan(k); DWORD oeks=OemKeyScan(k); if(oeks!=(DWORD)-1) //standard key { if (oeks & 0x00020000) { doshift=true; } if (oeks & 0x00040000) { doctrl=true; } if (oeks & 0x00080000) { doalt=true; } } //not a standard key else { oeks=vks; if (oeks & 0x0100) { doshift=true; } if (oeks & 0x0200) { doctrl=true; } if (oeks & 0x0400) { doalt=true; } } //invalid key code if (oeks==(DWORD)-1 || vks==(DWORD)-1) return; //no need for shift if it's already on if (ShiftOn) { doshift=false; } //no need for ctrl if it's already on if (ControlOn) { doctrl=false; } //no need for alt if it's already on if (AltOn) { doalt=false; } //shift on if (doshift) { SHIFTOn(); } //ctrl on if (doctrl) { CTRLOn(); } //alt on if (doalt) { ALTOn(); } // Press the key PressKey((BYTE)vks, (BYTE)oeks); //shift off if (doshift) { SHIFTOff(); } //ctrl off if (doctrl) { CTRLOff(); } //alt off if (doalt) { ALTOff(); } }