AutoIt: Индикатор за NumLock CapsLock
Публикувано: 09.09.13, 00:10:21 | Автор: ArMeN | Видяна: 1309 | Редактирано: 19.07.16, 21:11:06
Има лаптопи, които не разполагат с хардуерен индикатор за NumLock и CapsLock ...
Този скрипт показва точно това с иконка до часовника...TraySetToolTip("Индикатор за режима на клавиятура")
FCAPSLOCK()
FNUMLOCK()
HotKeySet("{NUMLOCK}","FNUMLOCK")
HotKeySet("{CAPSLOCK}","FCAPSLOCK")
While Sleep(100)
WEnd
Func FNUMLOCK()
$STATE=DllCall('user32.dll','int','GetKeyState','int',0x90)
If BitAND($STATE[0],1)=0 Then
TraySetState(8)
Else
TraySetState(4)
EndIf
EndFunc
Func FCAPSLOCK()
DllCall('user32.dll','int','keybd_event','int',0x14,'int',0,'int',0x02,'ptr',0)
$STATE=DllCall('user32.dll','int','GetKeyState','int',0x14)
If BitAND($STATE[0],1)=0 Then
$Icon=75
Else
$Icon=73
EndIf
TraySetIcon("shell32.dll",-($Icon+($Icon>-1)))
EndFunc
Източник
По съкратен скриптTraySetToolTip("Индикатор за режима на клавиятура")
While 1
Sleep(100)
$STATE=DllCall('user32.dll','int','GetKeyState','int',0x90)
If BitAND($STATE[0],1)=0 Then
TraySetState(8)
Else
TraySetState(4)
EndIf
DllCall('user32.dll','int','keybd_event','int',0x14,'int',0,'int',0x02,'ptr',0)
$STATE=DllCall('user32.dll','int','GetKeyState','int',0x14)
If BitAND($STATE[0],1)=0 Then
$Icon=75
Else
$Icon=73
EndIf
TraySetIcon("shell32.dll",-($Icon+($Icon>-1)))
WEnd#include <WinAPIEx.au3>
$fCapsLock = _CapsLock_On()
If @error Then
MsgBox(16, 'Error', '_CapsLock_On')
Else
If $fCapsLock Then
MsgBox(48, 'Info', 'Caps Lock включен')
Else
MsgBox(64, 'Info', 'Caps Lock выключен')
EndIf
EndIf
Func _CapsLock_On()
Local $i_State = _WinAPI_GetKeyState(0x14);$VK_CAPITAL из APIConstants.au3
If @error Then Return SetError(@error)
Return (BitAND($i_State, 1) <> 0)
EndFunc ;==>_CapsLock_On
Няма коментари.