Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Как сделать это?

Автор: pascal 25.10.2002 16:41

Как заставить мигать индикаторы на клавиатуре?

Автор: AlaRic 25.10.2002 21:35

Блин знал ведь когда то ....ничо вспомним!

Автор: Clane 26.10.2002 1:18

Код
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 26.10.2002 2:48

Цитата
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 26.10.2002 9:39

А тоже самое но для обычного Паскаля? smile.gif

Автор: mj 26.10.2002 23:46

Из личного архива:

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 18.10.2003 1:10

просто!