AutoHotkey 代码求助

查看 41|回复 3
作者:ThemanRonin   
  • 功能:

    在打开文件选择器的时候,按下win+z可以触发一个AHK GUI窗口在 文件选择器 的右边。AHK GUI会有个按钮,点击之后会传递一个路径给  ahk_class #32770 并且自动回车,来模拟手动输入某些路径的情况,比较方便
  • 需求:

    1,自动实现win+z的功能,无需手动快捷键触发,就是打开文件选择器的时候,自动弹出AHK GUI窗口
    2,关闭ahk_class #32770的同时,把AHK GUI也给关闭
    注:ahk_class #32770 就是 文件选择器(如下图)

       要求ahk版本:AutoHotkey 1.1.37.01
    不要尝试用AI 。我已经试过了【ChatGPT、 newbing、 文心一言、 Claude】  没一个能解决的
    [C] 纯文本查看 复制代码#z::
    CheckWindow:
        WinGet, hWnd, ID, ahk_class #32770
        if (hWnd != "")
        {                                
            WinMove, ahk_id %hWnd%, , , , WidthToSet, HeightToSet        
            WinGetPos, WinX, WinY, WinWidth, WinHeight, ahk_id %hWnd%
            GuiX := WinX + WinWidth + 10 ; GUI窗体与目标窗口之间的间距
            Gui, New, +AlwaysOnTop
            Gui, Add, Text,,  
           Gui, Add, Button, x15 y10 w100 h30 gButtonClicked1, 点击按钮1               
            Gui, Show, x%GuiX% y%WinY%
           Gui, Show, w130 h720,  
            SetTimer, CheckWindow, off
            return           
        }
            
    ButtonClicked1:
        WinActivate, ahk_class #32770 ; 切换到指定的窗口
        ControlFocus, Edit1, ahk_class #32770 ; 焦点聚焦到路径输入框
        ControlSetText, Edit1, C:\TEMP\, ahk_class #32770 ; 在路径输入框中输入指定路径
        ControlSend, , {Enter}, ahk_class #32770 ; 发送 Enter 键以确认路径
        return
    OnMessage(0x10, "CloseWindow")
    CloseWindow(wParam, lParam)
    {
        if WinExist("ahk_class #32770")
        {
            WinClose, ahk_class #32770
            Gui, Destroy
            ExitApp
        }
    }

    路径, 窗口

  • zhaopengdoctor   

    没有接触过AutoHotkey,感觉它的脚本要执行的话是不是必须要按下某个热键?如果是这样的话,可能就不会自动显示那个GUI窗口了。
    可以尝试使用autoit3来做个脚本实现你想要的功能,如果你有兴趣的话咱们可以一起探讨。
    ThemanRonin
    OP
      


    zhaopengdoctor 发表于 2023-7-10 13:30
    没有接触过AutoHotkey,感觉它的脚本要执行的话是不是必须要按下某个热键?如果是这样的话,可能就不会自动 ...

    AutoHotkey主要是以快捷键实现的,但是他也可以实现例如监测的功能。是需要计时器之类的监测判断 但是不是没效果就是死循环 我等在研究研究。我感觉你说的这个autoit3挺复杂的
    zhaopengdoctor   


    ThemanRonin 发表于 2023-7-10 13:34
    AutoHotkey主要是以快捷键实现的,但是他也可以实现例如监测的功能。是需要计时器之类的监测判断 但是不 ...

    au3把判断写到while 1...wend循环里就可以一直判断,直到符合条件时执行相应语句。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部