#Persistent
#NoEnv

; 获取内网IP地址
localIP := GetLocalIP()
if (localIP = "") {
    MsgBox, 无法获取本地IP地址。
    ExitApp
}

SetTimer, CheckClipboard, 1000  ; 每秒钟检查一次剪贴板

CheckClipboard:
    ClipSaved := ClipboardAll  ; 保存当前剪贴板内容
    ClipWait, 1  ; 等待剪贴板内容稳定
    if (ErrorLevel)
        return  ; 如果剪贴板没有内容则返回

    FilePath := Clipboard  ; 获取剪贴板内容
    if (FileExist(FilePath))  ; 检查剪贴板内容是否为文件路径
    {
        ; 获取文件的完整路径
        FullFilePath := FilePath
        ; 替换盘符分隔符
        StringReplace, FullFilePath, FullFilePath, \, /, All
        ; 构造新的链接
        NewLink := "http://" . localIP . ":80" . FullFilePath
        Clipboard := NewLink  ; 更新剪贴板内容为新的链接
        MsgBox, 新的链接已复制到剪贴板: %NewLink%
    }
    Clipboard := ClipSaved  ; 恢复剪贴板内容
return

GetLocalIP() {
    localIP := ""
    ; 执行 ipconfig 命令并捕获结果
    RunWait, %ComSpec% /c ipconfig, , UseErrorLevel, ipconfig_output
    if (ErrorLevel) {
        MsgBox, 无法执行 ipconfig 命令。
        return ""
    }
    ; 搜索 IPv4 地址
    Loop, Parse, ipconfig_output, `n, `r
    {
        IfInString, A_LoopField, IPv4 Address
        {
            StringSplit, ipParts, A_LoopField, : 
            localIP := Trim(ipParts2)
            ; 检查IP是否以192.168开头
            IfInString, localIP, 192.168
            {
                return localIP
            }
        }
    }
    return ""
}
