#Persistent
#NoEnv

; 监控剪贴板内容
SetTimer, CheckClipboardForLink, 500  ; 每0.5秒检查一次剪贴板

; 定义下载链接前缀
prefix := "http://192.168.1.1/"

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

    ClipContent := Clipboard  ; 获取剪贴板内容
    if (InStr(ClipContent, prefix) = 1)  ; 检查剪贴板内容是否以前缀开头
    {
        ; 如果剪贴板内容以指定前缀开头，则设置一个标志
        linkToDownload := ClipContent
        downloadFlag := true
    }
    else
    {
        downloadFlag := false
    }
    Clipboard := ClipSaved  ; 恢复剪贴板内容
return

; 监听Ctrl+V组合键（粘贴操作）
^v::
    if (downloadFlag)
    {
        ; 获取当前活动窗口的路径
        FileGetActiveWindowPath(currentDir)
        ; 启动下载程序
        Run, %ComSpec% /c curl -O "%linkToDownload%", %currentDir%, Hide
        MsgBox, 文件正在下载到: %currentDir%
        downloadFlag := false  ; 重置标志
    }
    else
    {
        ; 执行默认的粘贴操作
        Send, ^v
    }
return

FileGetActiveWindowPath(ByRef currentDir)
{
    ; 获取当前活动窗口的句柄
    WinGet, hwnd, ID, A
    ; 获取当前活动窗口的路径
    WinGetClass, class, ahk_id %hwnd%
    if (class = "CabinetWClass" || class = "ExploreWClass")
    {
        ; 如果是资源管理器窗口，获取当前路径
        for window in ComObjCreate("Shell.Application").Windows
        {
            try
            {
                if (window.HWND = hwnd)
                {
                    currentDir := window.Document.Folder.Self.Path
                    return
                }
            }
            catch
            {
                continue
            }
        }
    }
    else
    {
        ; 如果不是资源管理器窗口，获取当前工作目录
        currentDir := A_WorkingDir
    }
}
