使用autohotkey代码修改资源管理器的路径栏

使用autohotkey代码修改资源管理器的路径栏可以有很多中方法简单列举几种仅供参考:

一、通过模拟键盘输入

#IfWinActive ahk_class CabinetWClass ; 仅当资源管理器窗口处于活动状态时才执行下面的代码

^+p:: ; 当按下 Ctrl + Shift + P 组合键时触发
SendInput, !d ; 发送 Alt + D 来聚焦地址栏
Sleep, 100 ; 等待一小段时间确保地址栏获取焦点
SendInput, ^a ; 发送 Ctrl + A 选择全部内容
Sleep, 100 ; 等待一小段时间确保全部内容被选中
SendInput, C:\Your\Desired\Path ; 输入你想要的路径,确保替换 "C:\Your\Desired\Path" 为你的目标路径
Sleep, 100 ; 等待一小段时间确保路径输入完整
SendInput, {Enter} ; 发送回车键以导航到新路径
Return

#IfWinActive ; 重置上下文敏感性

这段代码会在按下 Ctrl + Shift + P 组合键时,模拟按键输入来切换焦点到资源管理器的地址栏,然后输入指定的路径并按下回车键。

二、通过Windows API 

这种方法更复杂,但可以更精确地控制资源管理器的行为。下面是一个示例代码,使用 Windows API 来实现这一目标:

#IfWinActive ahk_class CabinetWClass ; 仅当资源管理器窗口处于活动状态时才执行下面的代码

^+p:: ; 当按下 Ctrl + Shift + P 组合键时触发
{
    ; 获取资源管理器窗口句柄
    WinGet, hwnd, ID, A
    
    ; 获取资源管理器地址栏编辑框的句柄
    ControlGet, hEdit, hwnd,, Edit1, ahk_id %hwnd%
    
    ; 修改地址栏内容
    SendMessage, 0x0C, 0, "C:\Your\Desired\Path", , ahk_id %hEdit% ; WM_SETTEXT 消息
    
    ; 发送回车键以导航到新路径
    SendMessage, 0x100, 0xD, 0, , ahk_id %hEdit% ; WM_KEYDOWN 消息
    SendMessage, 0x101, 0xD, 0xC0000000, , ahk_id %hEdit% ; WM_KEYUP 消息
}
Return

#IfWinActive ; 重置上下文敏感性

这段代码通过发送 Windows 消息与资源管理器进行交互。它会定位到资源管理器窗口的地址栏编辑框,并发送消息以修改其中的文本内容。然后,它会发送回车键来导航到新路径。请确保替换 "C:\Your\Desired\Path" 为你的目标路径。

三、使用 UI 自动化技术

使用 UI 自动化技术实现修改资源管理器路径栏的功能需要以下步骤:

  1. 定位资源管理器窗口。
  2. 定位资源管理器窗口中的地址栏元素。
  3. 修改地址栏元素的文本内容。

下面是一个使用 UI 自动化技术实现的示例代码:

#Persistent ; 使脚本持续运行
#NoEnv ; 不使用环境变量

^+p:: ; 当按下 Ctrl + Shift + P 组合键时触发
{
    ; 使用 UI 自动化库
    DetectHiddenWindows, On
    ControlGetFocus, focusedControl, A
    WinGet, winID, ID, A
    WinActivate, ahk_id %winID%
    WinWaitActive, ahk_id %winID%
    
    ; 创建 UI 自动化对象
    SetBatchLines, -1
    objUIA := ComObjCreate("UIAutomationClient.CUIAutomation")
    
    ; 根据资源管理器窗口句柄获取顶级窗口元素
    objRootElement := objUIA.ElementFromHandle(winID)
    
    ; 查找地址栏元素
    objCondition := objUIA.CreatePropertyCondition(30005, 30064) ; UIA_ControlTypePropertyId = 30005, UIA_EditControlTypeId = 30064
    objEdit := objRootElement.FindFirst(TreeScope_Descendants, objCondition)
    
    ; 修改地址栏内容
    objEdit.SetValue("C:\Your\Desired\Path")
    
    ; 发送回车键以导航到新路径
    SendInput, {Enter}
    
    SetBatchLines, 10ms
    Return
}

在这个代码中:

  • 使用 UI 自动化库来创建 UI 自动化对象,以便与资源管理器窗口中的元素进行交互。
  • 根据资源管理器窗口句柄获取顶级窗口元素。
  • 查找地址栏元素,并使用 SetValue 方法来设置其文本内容。
  • 最后发送回车键以导航到新路径。

这段代码使用了 AutoHotkey 来实现 UI 自动化,但是 UI 自动化功能在 AutoHotkey 中并不是直接内置的,所以需要通过 COM 对象与 Windows 的 UI 自动化接口进行交互。

给TA捐赠
共{{data.count}}人
人已捐赠
教程

请问用dllcall能对屏幕进行取色吗?连续取色的情况下 和pixcelgetcolor相比哪个效率更高?

2024-3-15 16:00:10

教程

【高级教程】使用 AutoHotkey 调用自定义动态链接库

2024-3-17 21:12:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索