Тема: AHK: при изменении раскладки меняется вид каретки
Приветствую!
Для изменения раскладки клавиатуры я использую скрипт, который еще и меняет внешний вид курсора
(ножка стрелки закрашивается черным - не режет глаз, привычно и сразу понятно, какая раскладка).
Это полезно и удобно, но если бы менялся внешний вид каретки (выглядит как заглавная англ "и" - I),
было бы просто шикарно.
Насколько я понимаю, принцип тот же, что и при смене курсора -
стандартный виндусовый файл с курсором меняется на мой.
Часть скрипта, меняющая вид курсора взял отсюда - http://www.autohotkey.com/forum/topic35 … ight=caret
Но про каретку там ничего. Идеи?
RCtrl::
SetFormat, Integer, H
Locale1=0x4090409 ; Английский (американский).
Locale2=0x4190419 ; Русский.
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
if(InputLocaleID=Locale1)
{
SendMessage, 0x50,, % Locale2,, A
Cursor = %A_ScriptDir%\1.cur
CursorHandle := DllCall( "LoadCursorFromFile", Str,Cursor )
Cursors = 32512,32513,32514,32515,32516,32640,32641,32642,32643,32644,32645,32646,32648,32649,32650,32651
Loop, Parse, Cursors, `,
{
DllCall( "SetSystemCursor", Uint,CursorHandle, Int,A_Loopfield )
}
Return
}
else if(InputLocaleID=Locale2)
{
SendMessage, 0x50,, % Locale1,, A
SPI_SETCURSORS := 0x57
DllCall( "SystemParametersInfo", UInt,SPI_SETCURSORS, UInt,0, UInt,0, UInt,0 )
}
Return