AutoIt: Индикатор за NumLock CapsLock

Публикувано: 09.09.13, 00:10:21 | Автор: ArMeN | Видяна: 664 | Редактирано: 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

Не сте влезли в акаунта си за да коментирате.


 

Няма коментари.