Qt C++ Windowa.h klawiatura
Ostatnio zmodyfikowano 2016-04-17 09:35
Kefirek Temat założony przez niniejszego użytkownika |
Qt C++ Windowa.h klawiatura » 2016-04-14 20:09:04 Poniższy kod jest sczytaniem naciśniętych klawiszy klawiatury(pochodzi z toutoriala). Wynik działania: wyświetlenie naciśniętych znaków na klawiaturze. Znaki wyświetlają się podwójnie to znaczy raz przy naciśnięciu i drugi przy puszczeniu klawisza. I tu moje pytanko jak zrobić aby tylko raz znak się pojawiał na wyjściu konsoli przy naciśnięciu klawisza. Poza tym felerem jest brak polskich znaków. #include <QCoreApplication> #include <QDebug> #include <QTime> #include <QChar> #include <iostream> #include <windows.h> #include <QSettings> #pragma comment(lib, "user32.lib")
HHOOK hHook = NULL;
using namespace std; void UpdateKeyState( BYTE * keystate, int keycode ) { keystate[ keycode ] = GetKeyState( keycode ); }
LRESULT CALLBACK MyLowLevelKeyBoardProc( int nCode, WPARAM wParam, LPARAM lParam ) { KBDLLHOOKSTRUCT cKey = *(( KBDLLHOOKSTRUCT * ) lParam ); wchar_t buffer[ 5 ]; BYTE keyboard_state[ 256 ]; GetKeyboardState( keyboard_state ); UpdateKeyState( keyboard_state, VK_SHIFT ); UpdateKeyState( keyboard_state, VK_CAPITAL ); UpdateKeyState( keyboard_state, VK_CONTROL ); UpdateKeyState( keyboard_state, VK_MENU ); HKL keyboard_layout = GetKeyboardLayout( 0 ); char lpszName[ 0x100 ] = { 0 }; DWORD dwMsg = 1; dwMsg += cKey.scanCode << 16; dwMsg += cKey.flags << 24; int i = GetKeyNameText( dwMsg,( LPTSTR ) lpszName, 255 ); int result = ToUnicodeEx( cKey.vkCode, cKey.scanCode, keyboard_state, buffer, 4, 0, keyboard_layout ); buffer[ 4 ] = L'\0'; qDebug() << "key: " << cKey.vkCode << " " << QString::fromUtf16(( ushort * ) buffer ) << " " << QString::fromUtf16(( ushort * ) lpszName ); return CallNextHookEx( hHook, nCode, wParam, lParam ); }
int main( int argc, char * argv[] ) { QCoreApplication a( argc, argv ); hHook = SetWindowsHookEx( WH_KEYBOARD_LL, MyLowLevelKeyBoardProc, NULL, 0 ); if( hHook == NULL ) { qDebug() << "Hook failed"; } return a.exec(); }
Pozdrawiam i czekam na podpowiedzi |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2016-04-17 09:35:08 Zamykam temat. |
|
« 1 » |