Помощь - Поиск - Пользователи - Календарь
Полная версия: Как сделать это?
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
pascal
Как заставить мигать индикаторы на клавиатуре?
AlaRic
Блин знал ведь когда то ....ничо вспомним!
Clane
Код
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;
mj
Цитата
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;

В XP работает, но в пределах одного приложения и лампочки не мигают  :'(
Tosha
А тоже самое но для обычного Паскаля? smile.gif
mj
Из личного архива:

Mem[$0040:$0017]
7 - Insert (включено)
6 - CapsLock (включено)
5 - NumLock (включено)
4 - ScrollLock (включено)
3 - Alt (нажата)
2 - Ctrl (нажата)
1 - LeftShift (нажата)
0 - RightShift (нажата)

Mem[$0040:$0018]
7 - Insert (нажата)
6 - CapsLock (нажата)
5 - NumLock (нажата)
4 - ScrollLock (нажата)
3 - Ctrl-NumLock  (включено)

Это расшифровки битовых значений адресов памяти DOS.
Опять же предупреждаю, что в WinXP всё это действует в пределах одного процесса и не влияет на действительные показания индекаторов.
CJ
просто!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.