1 (изменено: peterverhovensky, 2021-04-29 01:28:22)

Тема: AHK: Изменение цвета ссылки в GUI

Бывает, что цвет ссылки в GUI по умолчанию (Gui, Add, Link) не сочетается с изменным фоном GUI (Gui, Color, 73716F). Можно ли этот цвет ссылки менять на свой? Пробовал добавлять стиль для ссылки, как в HTML, но не работает.

2

Re: AHK: Изменение цвета ссылки в GUI

Вот пример:

Gui, Font, s24
Gui, Add, Text, c1049A9, Some Text - I'm Blue

Gui, Add, Link, y+5 hwndhLink1 cLime, <a href="https://autohotkey.com">Some Link - I'm Lime</a>
SetSysLinkColor(hLink1)

Gui, Add, Link, y+5 hwndhLink2, <a href="https://autohotkey.com">Some Other Link - I'm Red</a>
SetSysLinkColor(hLink2, "Red")
Gui, Show

Loop 3 {
   Sleep, 300
   SetSysLinkColor(hLink2, 0)
   Sleep, 300
   SetSysLinkColor(hLink2, 0xFF0000)
}
return

GuiClose:
   ExitApp

SetSysLinkColor(hLink, color := "")  {
   static WM_USER := 0x400, LM_SETITEM := WM_USER + 0x302
        , LIF_ITEMINDEX := 0x1, LIF_STATE := 0x2
        , LIS_DEFAULTCOLORS := 0x10
        , L_MAX_URL_LENGTH := 2048 + 32 + 3, MAX_LINKID_TEXT := 48
        
   if (color != "")  {
      hGui := DllCall("GetParent", Ptr, hLink, Ptr)
      Gui, %hGui%: Font, c%color%
      GuiControl, %hGui%: Font, %hLink%
   }
   VarSetCapacity(LITEM, 4*4 + (MAX_LINKID_TEXT + L_MAX_URL_LENGTH)*2, 0)
   NumPut(LIF_ITEMINDEX | LIF_STATE, LITEM)
   NumPut(LIS_DEFAULTCOLORS, LITEM, 8)
   NumPut(LIS_DEFAULTCOLORS, LITEM, 12)
   while DllCall("SendMessage", Ptr, hLink, UInt, LM_SETITEM, Ptr, 0, Ptr, &LITEM)
      NumPut(A_Index, LITEM, 4, "UInt")
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder