Avatar billede soepro Nybegynder
03. september 2003 - 13:42 Der er 5 kommentarer og
1 løsning

Hvordan anvendes GetAsyncKeyState og GetKeyState API-erne

Jeg forsøger -lige p.t. forgæves- at bruge d.o. funktioner til at check om CAPS & NUM er "toggled", ligesom jeg gerne ville kunne skelne mellem 'Alt+a', 'a' og 'A':

#include <windows.h>
#include <conio.h>

int main(void)
{
  int key;
  do
  {
    if ((key = getch()) == 0)
      key = getch() << 8;
    cprintf("\r\nTast \'%c\' = %04x", (char)key, key);
    if (GetKeyState(VK_CAPITAL) & 0xFFFF)
      cprintf(" CAPS er ON.");
  } while (key != 0x1B);
  return 0;
}

Jeg synes jeg har prøvet alle kombinationer nu, men kan ikke få det til at virke - er der nogen af jer der har et fungerede eksempel. (jeg anvender BCB 4.0)
Avatar billede soreno Praktikant
03. september 2003 - 17:36 #1
Prøv at se lidt på dette:
http://www.eksperten.dk/spm/345830
Avatar billede soepro Nybegynder
04. september 2003 - 08:39 #2
soreno >> Jeg har faktisk prøvet alle de eksempler man kan finde gennem d.o. link, men ingen af dem virker ! Der er simpelthen INGEN reaktion fra tastaturet.

Jeg er med på at GetKeyState returnerer en short (dvs. 16 bit int), og at det er MSB som er interessant dvs. egentlig 0x8000 - men så burde <state> & 0xFFFF også være true ?!?
Avatar billede soreno Praktikant
04. september 2003 - 17:41 #3
Hvilken Windows bruger du ?

Eksemplet i linket virker fint hos mig !
Avatar billede driis Nybegynder
04. september 2003 - 18:10 #4
Dit eksempel virker også ganske fint hos mig. Dog ville jeg nok ændre linien
  if (GetKeyState(VK_CAPITAL) & 0xFFFF)
Til
  if (GetKeyState(VK_CAPITAL) & 0x0001)

Idet LSB er 1 hvis tasten er toggled, og det er vel det du vil kontrollere.

MSB er 1 hvis tasten er nede. Hvis du kigger på din CAPS LOCK indicator på keyboardet, kan det lade sig gøre at CAPS LOCK ikke er On, selvom tasten holdes nede.
Avatar billede driis Nybegynder
04. september 2003 - 18:11 #5
( jeg bruger i øvrigt MS VC++ 7 )
Avatar billede soepro Nybegynder
06. september 2003 - 12:36 #6
soreno >> Jeg kører Win98. Du bruger også BCB 4.0 ?
driss >> Du har selvfølgelig en pointe der.

Jeg tror lige jeg prøver MVC bare for sjov i morgen, og ser om det går en forskel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester