Сейчас на форуме: tyns777, zombi-vadim (+3 невидимых) |
![]() |
eXeL@B —› Программирование —› Эмуляция нажатия lock-ов |
Посл.ответ | Сообщение |
|
Создано: 13 марта 2008 22:48 · Личное сообщение · #1 имеется процедура на delphi для эмуляции нажати scrolllock, numlock , сcapslock Проблема в том что скрольлок и капслок эмулируются а намлок нет. Кто нибудь обясните пожайлуста почему так происходит. procedure SetLedState(KeyCode:integer; bOn: Boolean); var KBState: TKeyboardState; Code: Byte; begin case KeyCode of 1: Code := VK_SCROLL; 2: Code := VK_CAPITAL; 3: Code := VK_NUMLOCK; end; GetKeyboardState(KBState); if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin if Boolean(KBState[Code]) <> bOn then begin keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end; end else begin KBState[Code] := Ord(bOn); SetKeyboardState(KBState); end; end; ----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 ![]() |
|
Создано: 13 марта 2008 23:03 · Личное сообщение · #2 Попробуй вот такой код procedure SetNumLock(bState:Boolean); var KeyState : TKeyboardState; begin GetKeyboardState(KeyState); if ((bState)and(not((KeyState[VK_NUMLOCK]and 1)=1))or ((not(bState))and((KeyState[VK_NUMLOCK]and 1)=1))) then // Simulate a key press keybd_event(VK_NUMLOCK,$45,(KEYEVENTF_EXTENDEDKEY or 0),0); // Simulate a key release keybd_event(VK_NUMLOCK,$45,(KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP),0); end; ![]() |
|
Создано: 13 марта 2008 23:10 · Личное сообщение · #3 |
![]() |
eXeL@B —› Программирование —› Эмуляция нажатия lock-ов |
Эта тема закрыта. Ответы больше не принимаются. |