这篇教程C++ GetKeyboardLayout函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetKeyboardLayout函数的典型用法代码示例。如果您正苦于以下问题:C++ GetKeyboardLayout函数的具体用法?C++ GetKeyboardLayout怎么用?C++ GetKeyboardLayout使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetKeyboardLayout函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: UpdateDatavoid UpdateData(HWND hDlg){ WCHAR buf[KL_NAMELENGTH]; WCHAR buf2[512]; HWND hList; HKL *klList, hKl; int n, i,j; GetKeyboardLayoutName(buf); swprintf(buf2, L"Active: %s (%x)", buf, GetKeyboardLayout(0)); SetWindowText(GetDlgItem(hDlg, IDC_ACTIVE), buf2); hList = GetDlgItem(hDlg, IDC_LIST); SendMessage(hList, LB_RESETCONTENT, 0, 0); n = GetKlList(&klList); hKl = GetKeyboardLayout(0); for(i = 0; i < n; i++) { swprintf(buf, L"%x", klList[i] ); j = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM) buf); SendMessage(hList, LB_SETITEMDATA, j, (LPARAM) klList[i]); if(klList[i] == hKl) SendMessage(hList, LB_SETCURSEL, j, 0); } FreeKlList(klList);}
开发者ID:hoangduit,项目名称:reactos,代码行数:28,
示例2: GetForegroundWindowSInt32CMSWindowsKeyState::pollActiveGroup() const{ // determine the thread that'll receive this event HWND targetWindow = GetForegroundWindow(); DWORD targetThread = GetWindowThreadProcessId(targetWindow, NULL); // get keyboard layout for the thread HKL hkl = GetKeyboardLayout(targetThread); if (!hkl) { // GetKeyboardLayout failed. Maybe targetWindow is a console window. // We're getting the keyboard layout of the desktop instead. targetWindow = GetDesktopWindow(); targetThread = GetWindowThreadProcessId(targetWindow, NULL); hkl = GetKeyboardLayout(targetThread); } // get group GroupMap::const_iterator i = m_groupMap.find(hkl); if (i == m_groupMap.end()) { LOG((CLOG_DEBUG1 "can't find keyboard layout %08x", hkl)); return 0; } return i->second;}
开发者ID:axelson,项目名称:synergy-plus-depracated,代码行数:27,
示例3: TransConvertListLRESULT TransConvertList( HIMC hImc, LPIMESTRUCT lpIme){ LPSTR lpSrc; LPSTR lpDst; HGLOBAL hCandList; LPCANDIDATELIST lpCandList; LPSTR lpCandStr; UINT i, uBufLen; LRESULT lRet = 0; lpSrc = lpSource(lpIme); lpDst = lpDest(lpIme); uBufLen = ImmGetConversionListA(GetKeyboardLayout(0), hImc, (LPCSTR)lpSrc, NULL, 0, GCL_CONVERSION); if (uBufLen) { hCandList = GlobalAlloc(GHND, uBufLen); lpCandList = (LPCANDIDATELIST)GlobalLock(hCandList); lRet = ImmGetConversionListA(GetKeyboardLayout(0), hImc, (LPCSTR)lpSrc, lpCandList, uBufLen, GCL_CONVERSION); for (i = 0; i < lpCandList->dwCount; i++) { lpCandStr = (LPSTR)lpCandList + lpCandList->dwOffset[i]; *lpDst++ = *lpCandStr++; *lpDst++ = *lpCandStr++; } *lpDst = '/0'; lpIme->wCount = (WORD)lpCandList->dwCount * 2; GlobalUnlock(hCandList); GlobalFree(hCandList); } return (lRet);}
开发者ID:conioh,项目名称:os-design,代码行数:33,
示例4: VkToStringCString VkToString( DWORD vk ) { UINT vsc = MapVirtualKeyEx( vk & 0x7fffffffUL, MAPVK_VK_TO_VSC, GetKeyboardLayout( 0 ) ); if ( ! vsc ) { return CString( ); } BYTE keyState[256] = { 0, }; wchar_t keyBuf[8] = { 0, }; if ( 0 != ( vk & 0x80000000 ) ) { keyState[VK_SHIFT] = 0x80; } ToUnicodeEx( vk, vsc, keyState, keyBuf, 256, 0, GetKeyboardLayout( 0 ) ); return CString( keyBuf );}
开发者ID:TReKiE,项目名称:freecompose,代码行数:15,
示例5: LoadScanCodeMapvoid CKeyboardLayout::InitKeyboardLayout(){ m_ToolTip.Create(this, TTS_ALWAYSTIP | TTS_NOPREFIX); m_ToolTip.SetMaxTipWidth(0x100); // Enable multiline LoadScanCodeMap(m_HkeyType); for (int i = 0; i < MAX_KEYBOARD_LAYOUT; ++i) { if (!GetDlgItem(m_KeyboardLayouts[i].nBaseControlID) || !GetDlgItem(m_KeyboardLayouts[i].nCurrentControlID)) { continue; } m_KeyboardLayouts[i].pBaseKey = new CKey(m_KeyboardLayouts[i].nBaseControlID, NORMAL_KEY, m_HkeyType); m_KeyboardLayouts[i].pBaseKey->SubclassDlgItem(m_KeyboardLayouts[i].nBaseControlID, this); m_ToolTip.AddTool(GetDlgItem(m_KeyboardLayouts[i].nBaseControlID), GetToolTipID(m_KeyboardLayouts[i].nToolTipID)); m_KeyboardLayouts[i].pCurrentKey = new CKey(m_KeyboardLayouts[i].nCurrentControlID, ORIGINAL_KEY, m_HkeyType); m_KeyboardLayouts[i].pCurrentKey->SubclassDlgItem(m_KeyboardLayouts[i].nCurrentControlID, this); m_ToolTip.AddTool(GetDlgItem(m_KeyboardLayouts[i].nCurrentControlID), GetToolTipID(m_KeyboardLayouts[i].nToolTipID)); ScanCode current = {'/0'}; if (GetScanCodeMap(m_HkeyType, m_KeyboardLayouts[i].scancode, ¤t)) { m_KeyboardLayouts[i].pCurrentKey->SetKeyType(REMAPPED_KEY); CString szWindowText; GetDlgItem(GetBaseControlID(current))->GetWindowText(szWindowText); GetDlgItem(m_KeyboardLayouts[i].nCurrentControlID)->SetWindowText(szWindowText); KeyboardLayout *pKeyboardLayout = GetKeyboardLayout(GetBaseControlID(current)); if (pKeyboardLayout) { m_ToolTip.UpdateTipText(GetToolTipID(pKeyboardLayout->nToolTipID), GetDlgItem(m_KeyboardLayouts[i].nCurrentControlID)); } } }}
开发者ID:kikairoya,项目名称:xkeymacs,代码行数:35,
示例6: m_delayMSCKeySend::CKeySend(bool bForceOldMethod, unsigned defaultDelay) : m_delayMS(defaultDelay){ if (bFirst) { cinput.type = INPUT_KEYBOARD; cinput.ki.wVk = 0; cinput.ki.wScan = 0; cinput.ki.dwFlags = 0; cinput.ki.time = 0; cinput.ki.dwExtraInfo = 0; bFirst = false; } m_impl = new CKeySendImpl; m_impl->m_delay = m_delayMS; // We want to use keybd_event (OldSendChar) for Win2K & older, // SendInput (NewSendChar) for newer versions. if (bForceOldMethod) m_impl->m_isOldOS = true; else { m_impl->m_isOldOS = !pws_os::IsWindowsVistaOrGreater(); } // get the locale of the current thread. // we are assuming that all window and threading in the // current users desktop have the same locale. m_impl->m_hlocale = GetKeyboardLayout(0);}
开发者ID:ByteRisc,项目名称:pwsafe,代码行数:27,
示例7: GetKeyboardLayoutLCID Applet::GetLocaleId(DWORD threadId){ HKL hkl = GetKeyboardLayout(threadId); DWORD lgid = LOWORD(hkl); return MAKELCID(lgid, SORT_DEFAULT);}
开发者ID:Alim-Oezdemir,项目名称:emergedesktop,代码行数:7,
示例8: _gdk_windowing_initvoid_gdk_windowing_init (void){ gchar buf[10]; if (getenv ("GDK_IGNORE_WINTAB") != NULL) _gdk_input_ignore_wintab = TRUE; else if (getenv ("GDK_USE_WINTAB") != NULL) _gdk_input_ignore_wintab = FALSE; if (gdk_synchronize) GdiSetBatchLimit (1); _gdk_app_hmodule = GetModuleHandle (NULL); _gdk_display_hdc = CreateDC ("DISPLAY", NULL, NULL, NULL); _gdk_input_locale = GetKeyboardLayout (0); _gdk_input_locale_is_ime = ImmIsIME (_gdk_input_locale); GetLocaleInfo (MAKELCID (LOWORD (_gdk_input_locale), SORT_DEFAULT), LOCALE_IDEFAULTANSICODEPAGE, buf, sizeof (buf)); _gdk_input_codepage = atoi (buf); GDK_NOTE (EVENTS, g_print ("input_locale:%p, codepage:%d/n", _gdk_input_locale, _gdk_input_codepage)); CoInitialize (NULL); _gdk_selection = gdk_atom_intern_static_string ("GDK_SELECTION"); _wm_transient_for = gdk_atom_intern_static_string ("WM_TRANSIENT_FOR"); _targets = gdk_atom_intern_static_string ("TARGETS"); _delete = gdk_atom_intern_static_string ("DELETE"); _save_targets = gdk_atom_intern_static_string ("SAVE_TARGETS"); _utf8_string = gdk_atom_intern_static_string ("UTF8_STRING"); _text = gdk_atom_intern_static_string ("TEXT"); _compound_text = gdk_atom_intern_static_string ("COMPOUND_TEXT"); _text_uri_list = gdk_atom_intern_static_string ("text/uri-list"); _text_html = gdk_atom_intern_static_string ("text/html"); _image_png = gdk_atom_intern_static_string ("image/png"); _image_jpeg = gdk_atom_intern_static_string ("image/jpeg"); _image_bmp = gdk_atom_intern_static_string ("image/bmp"); _image_gif = gdk_atom_intern_static_string ("image/gif"); _local_dnd = gdk_atom_intern_static_string ("LocalDndSelection"); _gdk_win32_dropfiles = gdk_atom_intern_static_string ("DROPFILES_DND"); _gdk_ole2_dnd = gdk_atom_intern_static_string ("OLE2_DND"); /* MS Office 2007, at least, offers images in common file formats * using clipboard format names like "PNG" and "JFIF". So we follow * the lead and map the GDK target name "image/png" to the clipboard * format name "PNG" etc. */ _cf_png = RegisterClipboardFormat ("PNG"); _cf_jfif = RegisterClipboardFormat ("JFIF"); _cf_gif = RegisterClipboardFormat ("GIF"); _cf_url = RegisterClipboardFormat ("UniformResourceLocatorW"); _cf_html_format = RegisterClipboardFormat ("HTML Format"); _cf_text_html = RegisterClipboardFormat ("text/html"); _gdk_win32_selection_init ();}
开发者ID:Aridna,项目名称:gtk2,代码行数:60,
示例9: iupwinKeyDecodeint iupwinKeyDecode(int wincode){ HKL k; int i, count; k = GetKeyboardLayout(0); if ((int)HIWORD(k) == 0x0416) /* ABNT */ { int abnt_count = sizeof(keytable_abnt)/sizeof(keytable_abnt[0]); for (i = 0; i < abnt_count; i++) { if (keytable_abnt[i].wincode == wincode) return winKeyMap2Iup(keytable_abnt, i); } } count = sizeof(winkey_map)/sizeof(winkey_map[0]); for (i = 0; i < count; i++) { if (winkey_map[i].wincode == wincode) return winKeyMap2Iup(winkey_map, i); } return 0;}
开发者ID:svn2github,项目名称:iup-iup,代码行数:25,
示例10: GetLayoutOfTextHKL GetLayoutOfText(LPCTSTR ptszInText){ HKL hklCurLay = hklLayouts[0]; LPTSTR ptszKeybBuff = ptszLayStrings[0]; DWORD dwMaxSymbols = 0, dwTemp = 0; for (DWORD j = 0; j < _tcslen(ptszInText); j++) if (_tcschr(ptszKeybBuff, ptszInText[j]) != NULL) ++dwMaxSymbols; for (DWORD i = 1; i < bLayNum; i++) { ptszKeybBuff = ptszLayStrings[i]; DWORD dwCountSymbols = 0; for (DWORD j = 0; j<_tcslen(ptszInText); j++) if (_tcschr(ptszKeybBuff, ptszInText[j]) != NULL) ++dwCountSymbols; if (dwCountSymbols == dwMaxSymbols) dwTemp = dwCountSymbols; else if (dwCountSymbols>dwMaxSymbols) { dwMaxSymbols = dwCountSymbols; hklCurLay = hklLayouts[i]; } } if (dwMaxSymbols == dwTemp) hklCurLay = GetKeyboardLayout(0); return hklCurLay;}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:31,
示例11: strSetCurKeyboardvoid strSetCurKeyboard(void){ udword keyboard; if (keyboard = GetKeyboardLayout(0)) { if (PRIMARYLANGID(keyboard)==LANG_ENGLISH) { strCurKeyboardLanguage = languageEnglish; } else if (PRIMARYLANGID(keyboard)==LANG_FRENCH) { strCurKeyboardLanguage = languageFrench; } else if (PRIMARYLANGID(keyboard)==LANG_GERMAN) { strCurKeyboardLanguage = languageGerman; } else if (PRIMARYLANGID(keyboard)==LANG_SPANISH) { strCurKeyboardLanguage = languageSpanish; } else if (PRIMARYLANGID(keyboard)==LANG_ITALIAN) { strCurKeyboardLanguage = languageItalian; } } else strCurKeyboardLanguage = languageEnglish;}
开发者ID:spippolatore,项目名称:homeworld-1,代码行数:30,
示例12: m_delayMSCKeySend::CKeySend(bool bForceOldMethod) : m_delayMS(10){ if (bFirst) { cinput.type = INPUT_KEYBOARD; cinput.ki.wVk = 0; cinput.ki.wScan = 0; cinput.ki.dwFlags = 0; cinput.ki.time = 0; cinput.ki.dwExtraInfo = 0; bFirst = false; } m_impl = new CKeySendImpl; m_impl->m_delay = m_delayMS; // We want to use keybd_event (OldSendChar) for Win2K & older, // SendInput (NewSendChar) for newer versions. if (bForceOldMethod) m_impl->m_isOldOS = true; else { DWORD majorVersion, minorVersion; pws_os::getosversion(majorVersion, minorVersion); m_impl->m_isOldOS = ((majorVersion <= 4) || (majorVersion == 5 && minorVersion == 0)); } // get the locale of the current thread. // we are assuming that all window and threading in the // current users desktop have the same locale. m_impl->m_hlocale = GetKeyboardLayout(0);}
开发者ID:wcremeika,项目名称:thesis,代码行数:30,
示例13: WndProcstatic LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { //fs_log("WndProc %d/n", message); HRAWINPUT raw_input_handle; switch (message) { case WM_INPUTLANGCHANGE: g_keyboard_layout = GetKeyboardLayout(0); break; case WM_INPUT: raw_input_handle = (HRAWINPUT) lparam; /* unsigned int size; if (GetRawInputData(raw_input_handle, RID_INPUT, NULL, &size, sizeof(RAWINPUTHEADER)) != -1) { void *data = malloc(size); if (GetRawInputData(raw_input_handle, RID_INPUT, data, &size, sizeof(RAWINPUTHEADER)) != -1) { process_input(data); } free(data); } */ unsigned int size = RAW_INPUT_MAX_SIZE; if (GetRawInputData(raw_input_handle, RID_INPUT, &g_raw_input_data, &size, sizeof(RAWINPUTHEADER)) != -1) { process_input(&g_raw_input_data); } // must call DefWindowProc according to http://msdn.microsoft.com/ // en-us/library/windows/desktop/ms645590(v=vs.85).aspx return DefWindowProc(hwnd, message, wparam, lparam); } return CallWindowProc(g_wndproc, hwnd, message, wparam, lparam);}
开发者ID:eehrich,项目名称:fs-uae,代码行数:34,
示例14: ShowOnScreenKeyboard/** * Show the on-screen keyboard (osk) associated with a given textbox * @param parent pointer to the Window where this keyboard originated from * @param button widget number of parent's textbox */void ShowOnScreenKeyboard(Window *parent, int button){ DeleteWindowById(WC_OSK, 0); GetKeyboardLayout(); new OskWindow(&_osk_desc, parent, button);}
开发者ID:J0anJosep,项目名称:OpenTTD,代码行数:12,
示例15: _dx2vkstatic UInt8 _dx2vk(UINT dx){ if (dx >= VK_TABLE_SIZE) return NOKEY; UInt8 vkCode = NOKEY; HKL kbLayout = GetKeyboardLayout(0); vkCode = MapVirtualKeyEx(dx, 3, kbLayout); if (!vkCode) { switch (dx) { DX2VK(DIVIDE); DX2VK(RCONTROL); DX2VK(RMENU); DX2VK(HOME); DX2VK(PRIOR); DX2VK(UP); DX2VK(DOWN); DX2VK(LEFT); DX2VK(RIGHT); DX2VK(END); DX2VK(NEXT); DX2VK(INSERT); DX2VK(DELETE); case DIK_NUMPADENTER: vkCode = VK_SEPARATOR; break; default: vkCode = NOKEY; } } return vkCode;}
开发者ID:679565,项目名称:SkyrimOnline,代码行数:35,
示例16: funcSetImeString// &SetImeStringstatic void funcSetImeString(HWND i_hwnd, int i_size){ _TCHAR *buf = new _TCHAR(i_size); DWORD len = 0; _TCHAR ImeDesc[GANA_MAX_ATOM_LENGTH]; UINT ImeDescLen; DWORD error; DWORD denom = 1; HANDLE hPipe = CreateFile(addSessionId(HOOK_PIPE_NAME).c_str(), GENERIC_READ, FILE_SHARE_READ, (SECURITY_ATTRIBUTES *)NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL); error = ReadFile(hPipe, buf, i_size, &len, NULL); CloseHandle(hPipe); ImeDescLen = ImmGetDescription(GetKeyboardLayout(0), ImeDesc, sizeof(ImeDesc)); if (_tcsncmp(ImeDesc, _T("SKKIME"), ImeDescLen) > 0) denom = sizeof(_TCHAR); HIMC hIMC = ImmGetContext(i_hwnd); if (hIMC == INVALID_HANDLE_VALUE) return; int status = ImmGetOpenStatus(hIMC); ImmSetCompositionString(hIMC, SCS_SETSTR, buf, len / denom, NULL, 0); delete buf; ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_COMPLETE, 0); if (!status) ImmSetOpenStatus(hIMC, status); ImmReleaseContext(i_hwnd, hIMC);}
开发者ID:byplayer,项目名称:yamy,代码行数:33,
示例17: WinMain/** * Launches Awesomenauts, registers the chat binds and listens for key events. */int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ Process* awsmProcess = new Process(); // Load the config file data. INIReader* reader = new INIReader(BLABL_CONFIG); if (reader->ParseError() < 0) { std::cerr << "ERROR: Failed to parse config file." << std::endl; return 1; } // Launch Awesomenauts. const char* awsmBin = reader->Get("Awesomenauts", "Bin", DEFAULT_BIN).c_str(); const char* awsmDir = reader->Get("Awesomenauts", "Dir", DEFAULT_DIR).c_str(); if (!awsmProcess->Launch(awsmBin, awsmDir)) { std::cerr << "ERROR: Failed to create process." << std::endl; return 1; } // Load the bindings and listen for hot key presses while Awesomenauts runs. KeyListener* awsmListener = new KeyListener(GetKeyboardLayout(0)); awsmListener->LoadFromFile(reader); delete reader; while (awsmProcess->IsRunning()) awsmListener->ProcessInput(); delete awsmProcess; delete awsmListener; return 0;}
开发者ID:Lyrositor,项目名称:BlablLauncher,代码行数:34,
示例18: black/* returns host keyboard mapping. used to initialize the keyboard map when starting with a black (default) config, so an educated guess works good enough most of the time :) FIXME: add more languages, constants are defined in winnt.h https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspx*/int kbd_arch_get_host_mapping(void){ int n; int maps[KBD_MAPPING_NUM] = { KBD_MAPPING_US, KBD_MAPPING_UK, KBD_MAPPING_DE, KBD_MAPPING_DA, KBD_MAPPING_NO, KBD_MAPPING_FI, KBD_MAPPING_IT }; int langids[KBD_MAPPING_NUM] = { MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK), MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), MAKELANGID(LANG_DANISH, SUBLANG_DANISH_DENMARK), MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL), MAKELANGID(LANG_FINNISH, SUBLANG_FINNISH_FINLAND), MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN) }; int lang = (int)GetKeyboardLayout(0); /* try full match first */ lang &= 0xffff; /* lower 16 bit contain the language id */ for (n = 0; n < KBD_MAPPING_NUM; n++) { if (lang == langids[n]) { return maps[n]; } } /* try only primary language */ lang &= 0x3ff; /* lower 10 bit contain the primary language id */ for (n = 0; n < KBD_MAPPING_NUM; n++) { if (lang == (langids[n] & 0x3ff)) { return maps[n]; } } return KBD_MAPPING_US;}
开发者ID:sasq64,项目名称:script-vice,代码行数:41,
示例19: TranslateToUnicodeUINT TranslateToUnicode (WORD *uVKey, LPBYTE GlobalKeyStates){ BYTE KeyStates[256]; UINT USvk = 0; GetKeyboardState(KeyStates); KeyStates[VK_CONTROL] = KeyStates[VK_MENU ] = KeyStates[VK_LMENU] = KeyStates[VK_RMENU] = 0; if (!klf.layout.trackCaps) KeyStates[VK_CAPITAL] = 0; WCHAR TransedChar = NULL; UINT ScanCode = MapVirtualKey(*uVKey, MAPVK_VK_TO_VSC); if (!ScanCode) return false; if (klf.layout.posBased==true && GetKeyboardLayout(0) != (HKL)0x04090409){ USvk = ScancodeToVirtualkey(ScanCode); if (USvk != *uVKey && USvk <= 255){ GlobalKeyStates[USvk] = KeyStates[USvk] = KeyStates[*uVKey]; GlobalKeyStates[*uVKey] = KeyStates[*uVKey] = 0x00; *uVKey = USvk; } }else { USvk = *uVKey ; } int Return = ToUnicodeEx(*uVKey, ScanCode, KeyStates, &TransedChar, 1, 0, hkl); if (!Return) return false; if (TransedChar > 33 || TransedChar < 126) *uVKey = TransedChar; else {return false;} return USvk;}
开发者ID:HughP,项目名称:keymagic,代码行数:35,
示例20: GetKeyboardLayout i32 CKeyboard::Init() { //Get default keyboard localization m_WinHKL = GetKeyboardLayout( 0 ); return XST_OK; }
开发者ID:przemyslaw-szymanski,项目名称:x-source-engine,代码行数:7,
示例21: sendChar/** * Sends a char using emulated keyboard input * * This works for most cases, but not for dead keys etc **/void sendChar(TCHAR key, KBDLLHOOKSTRUCT keyInfo){ SHORT keyScanResult = VkKeyScanEx(key, GetKeyboardLayout(0)); keyInfo.vkCode = keyScanResult; char modifiers = keyScanResult >> 8; bool shift = ((modifiers & 1) != 0); bool alt = ((modifiers & 2) != 0); bool ctrl = ((modifiers & 4) != 0); bool altgr = alt && ctrl; if (altgr) { ctrl = false; alt = false; } if (altgr) keybd_event(VK_RMENU, 0, 0, 0); if (ctrl) keybd_event(VK_CONTROL, 0, 0, 0); if (alt) keybd_event(VK_MENU, 0, 0, 0); // ALT if (shift) keybd_event(VK_SHIFT, 0, 0, 0); keybd_event(keyInfo.vkCode, keyInfo.scanCode, keyInfo.flags, keyInfo.dwExtraInfo); if (altgr) keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0); if (ctrl) keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); if (alt) keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); // ALT if (shift) keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);}
开发者ID:owdee,项目名称:neo2-llkh,代码行数:39,
|