SendInput Não está funcionando nos Jogos

Estou usando o seguinte código GenerateKey padrão:

void GenerateKey ( int vk , BOOL bExtended)
{
  KEYBDINPUT  kb={0};
  INPUT    Input={0};
  // generate down 
  if ( bExtended )
    kb.dwFlags  = KEYEVENTF_EXTENDEDKEY;
  kb.wVk  = vk;  
  Input.type  = INPUT_KEYBOARD;

  Input.ki  = kb;
  ::SendInput(1,&Input,sizeof(Input));

  // generate up 
  ::ZeroMemory(&kb,sizeof(KEYBDINPUT));
  ::ZeroMemory(&Input,sizeof(INPUT));
  kb.dwFlags  =  KEYEVENTF_KEYUP;
  if ( bExtended )
    kb.dwFlags  |= KEYEVENTF_EXTENDEDKEY;

  kb.wVk    =  vk;
  Input.type  =  INPUT_KEYBOARD;
  Input.ki  =  kb;
  ::SendInput(1,&Input,sizeof(Input));
}

Chamo essa função para simular as teclas de seta (cima, baixo, esquerda, direita). No entanto, isso funciona na janela normal do explorer e em pequenos jogos em flash. No entanto, quando eu experimento em jogos como Need for Speed ou Roadrash, ele não funciona. Quaisquer possíveis motivos para esse comportamento?

questionAnswers(1)

yourAnswerToTheQuestion