31. marts 2003 - 19:15Der er
15 kommentarer og 1 løsning
Bliver der trykket på en tast ?
Hvordan aflæser jeg keyboardet så jeg kan se hver gang der trykkes på en tast ? (Programmet skal ikke vente på en tast, men derimod blot observere når der bliver indtastet).
Jeg bruger BCB 4.0 hvis det har noget at sige.
Derudover tænkte jeg på om man kan aflæse musens knapper ligeså ?
driis > Det virker ikke under Windows NT, har ik tjekket 9x men tror problematikken vil være den samme der, specielt idet der står ved kbhit: "Do not use this in Win32" eller noget ala det.
Jeg bruger det ellers under Windows XP, og det giver ingen problemer. Jeg valgte _kbhit() og getch() fordi det er simple funktioner, og fordi de kan bruges både i Windows og DOS. Jeg kan lige prøve at stykke et Windows - specifikt eksempel sammen, 2 sekunder.
Hvis det er Windows - specifikt, kan du bruge det her eksempel i stedet - det ser efter, om der er trykket på 'M', og afslutter når du trykker på Enter.
#include <windows.h> #include <iostream>
using namespace std ;
int main() { char c = 0 ;
while ( !(GetAsyncKeyState(VK_RETURN) & 0x8000) ) { if ( GetAsyncKeyState('M') & 0x8000 ) cout << "M er trykket.\n" ; } }
Well min ide var at lave en slags timer eller noget i den stil, der tjekkede hele tiden om der blev trykket på en tast og hvis der gjorde skulle den tælle en variabel 1 op. Dvs. det er lige meget hvilken tast der trykkes på. Programmet skal være et windows program og jeg regner med at den skulle kunne ligge i systray. Dvs. der bliver ingen main() i programmet.
Aah device-driver mon dog. Der er noget med at int 60h snupper den tast man trykker på (mener jeg at kunne huske) så er det jo blot noget med at lave noget hokus pokus med den. Og ja jeg tror også at NT og 9x er forskellige, men det er stadigvæk windows så helt forskellige er de næppe.
Det er ikke nødvendigt at lave assembler - der er mulighed i Windows for at lave et såkaldt dll-hook ved hjælp af funktionen SetWindowHookEx - der er en forklaring her : http://www.developer.com/net/vb/article.php/1502401 på hvordan du får fat i tastetryk.
Det med hooks var det jeg skulle bruge - takker :)
Synes godt om
Ny brugerNybegynder
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.