Título: el uso del teclado en c++
Publicado por: peterfly en 10 Diciembre 2011, 21:45 pm
Hola a todos... Me preguntaba si se puede acer lo siguiente en c++:
Al presionar una letra del abecedario en el teclado... que haga un enter sin tener que presionarlo
Si se puede... me podriais explicar como???
GRACIAS
Título: Re: el uso del teclado en c++
Publicado por: Uknow en 11 Diciembre 2011, 00:57 am
Hola a todos... Me preguntaba si se puede acer lo siguiente en c++:
Al presionar una letra del abecedario en el teclado... que haga un enter sin tener que presionarlo
Si se puede... me podriais explicar como???
GRACIAS
Puedes usar hooks o puedes hacer esto: #include <iostream> #include <windows.h> using namespace std; char *tomar(char *); void input(); int main() { char cad[10]; tomar(cad); if(cad[0] != 0) { input(); } setbuf(stdin, NULL); cin.get(); return 0; } char *tomar(char *cad) { DWORD num, modo = 0; HANDLE input = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(input,&modo); SetConsoleMode(input,modo&~(ENABLE_ECHO_INPUT|ENABLE_LINE_INPUT)); ReadConsole(input,&cad[0],1, &num, NULL); SetConsoleMode(input,modo); return cad; } void input() { keybd_event(VK_SPACE, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); }
Espero haberte ayudado. :)
Título: Re: el uso del teclado en c++
Publicado por: peterfly en 11 Diciembre 2011, 01:19 am
no se mucho de programacion en c++, ace poco que empece a aprender... me puedes poner un ejemplo de un codigo con "hooks"???
Título: Re: el uso del teclado en c++
Publicado por: Uknow en 11 Diciembre 2011, 19:00 pm
no se mucho de programacion en c++, ace poco que empece a aprender... me puedes poner un ejemplo de un codigo con "hooks"???
Alguien de este mismo foro publico esto hace un tiempo. Es un gran ejemplo: #include <windows.h> #include <stdio.h> HHOOK hHook; MSG messages; LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam); int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hook_teclado, hThisInstance, NULL); while(GetMessage(&messages, NULL, NULL, NULL)){ TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam){ if(nCode < 0) return CallNextHookEx(hHook, nCode, wParam, lParam); if(wParam == WM_KEYDOWN){ PKBDLLHOOKSTRUCT teclado = (PKBDLLHOOKSTRUCT)lParam; teclado->vkCode = VK_SPACE; printf("%c", teclado->vkCode); free(teclado); } return CallNextHookEx(hHook, nCode, wParam, lParam); }
Saludos.
|