代码主要实现了在一个GUI窗口中显示多个带有超链接的文本,并允许修改这些超链接的颜色。
#SingleInstance Force
; 添加控件
Gui, Add, Button, w0 h0 ; 用于Focus
link_text := "测试效果0 <a href=""https://autohotkey.com"">AutoHotkey</a> 测试效果1 <a href=""https://www.autohotkey.com/boards/"">AutoHotkey Community</a> 测试效果2"
Gui, Add, Link, vMyLink xp yp cff0000, %link_text%
; 获取Link控件句柄
GuiControlGet, LinkHwnd, Hwnd, MyLink
; 设置链接颜色
; SetSysLinkColor(LinkHwnd, 1) ; 设置第二个链接的颜色
; 使用正则表达式计算链接数量
RegExReplace(link_text, "O)<a\s+href[^>]*>[^<]*</a>",,linkCount)
; 设置所有链接的颜色
Loop, %linkCount%
SetSysLinkColor(LinkHwnd, A_Index - 1) ; 索引从0开始
; 显示GUI
Gui, Show, AutoSize
return
SetSysLinkColor(linkObj, index=0) {
static LM_SETITEM := 0x702, LIF_ITEMINDEX := 0x1, LIF_STATE := 0x2, LIS_DEFAULTCOLORS := 0x10
; 创建LITEM结构
VarSetCapacity(LITEM, 16, 0)
mask := LIF_ITEMINDEX | LIF_STATE
NumPut(mask, LITEM, 0, "UInt") ; mask
if (index > 0)
NumPut(index, LITEM, 4, "Int") ; iLink
state := LIS_DEFAULTCOLORS
NumPut(state, LITEM, 8, "UInt") ; state
NumPut(state, LITEM, 12, "UInt") ; stateMask
; 发送消息
SendMessage, LM_SETITEM, 0, &LITEM,, ahk_id %linkObj%
}
GuiClose:
ExitApp
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)