wtorek, 9 października 2012

Odczyt klawiatury

 Jako, że na razie zależy mi na jak najwiekszym podobieństwie do Pascala, musiałem zaimplementować wersję funkcji readkey. Jak to zwykle bywa w internecie wiedza jest rozmyta, ale udało mi się zebrać to w wystarczająco dobry odpowiednik:

[DllImport("user32.dll")] static extern short GetAsyncKeyState(int vKey);

private static char ReadKey() 

  bool search = false; 
  var pressed = 0; 
  do 
  {
    for (int i = 0; i < 255; i++) 
    {
      short keyState = GetAsyncKeyState(i); 
      if (0 != (keyState & 0x8000))
      {
        pressed = i; 
        search = true; 
        break;
      }
    }
    Application.DoEvents();
  } 
  while (!search); 
  return (char) pressed; 

Zostawiam dla siebie i potomnych. Funkcja GetAsyncKeyState ma taką fajna właściwość, że potrafi podać, czy dany klawisz jest wciśnięty aktualnie lub był wciśnięty od czasu ostatniego jego sprawdzenia.

Brak komentarzy:

Prześlij komentarz