示例#1
0
/**********************************************************************
 *		OemKeyScan (KEYBOARD.128)
 */
DWORD WINAPI OemKeyScan16(WORD wOemChar)
{
    return OemKeyScan( wOemChar );
}
示例#2
0
//-----------------------------------------------------------
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();
	}


}