Доброго времени суток. Сделал скрипт на индикацию раскладки клавиатуры. Нужно что бы он показывал раскладку клавиатуры только в "Google Chrome". Использовал функцию (IfWinActive) , работает но как то неправильно . Окно "Gui " показывается только в "Google Chrome" , работает исправно но при сворачивании "Google Chrome" остаётся висеть на рабочем столе. Помогите исправить.
DetectHiddenWindows, on
Gui, +hwndhGui +AlwaysOnTop -Caption +ToolWindow +LastFound
;WinGet, ID
;WinSet TransColor, EEAA99
;Gui, Color, EEAA99
gui, font, s12
Gui, Add, Text , cFF8000 vStatic1 x0 y0, Ru
Gui, Add, Text , cFF8000 vStatic2 x0 y0, En
loop
IfWinActive ahk_class Chrome_WidgetWin_1
{
oldlang:=lang
lang:=InputLayout()
if (oldlang!=lang)
If (lang = "Russian")
{
GuiControl, hide, static2
GuiControl, Show, static1
Gui, Show, x95 y39 w20 h20 NA, lang053
}
Else If (lang = "English")
{
GuiControl, hide, static1
GuiControl, Show, static2
Gui, Show, x95 y39 w20 h20 NA, lang053
}
sleep, 50
}
InputLayout()
{
WinGetClass, Class, % "ahk_id" hID := WinExist("A")
if !id := DllCall("GetWindow", Ptr, hid, UInt, GW_OWNER := 4, Ptr)
id:=hID
ThreadID := DllCall("GetWindowThreadProcessId", "Int", id, "Int", 0)
HKL := DllCall("GetKeyboardLayout", "uint", ThreadID, "UShort")
VarSetCapacity(sKbd, 260, 0)
DllCall("GetLocaleInfo", "uint", HKL
, "uint", 0x1001
, "str", sKbd
, "uint", 260)
Return sKbd
}
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).