Autohotkey 自动热键功能,无需发送F2键代码即可执行文件重命名

Autohotkey 自动热键功能,无需发送F2键代码即可执行文件重命名,autohotkey,Autohotkey,我想在文件资源管理器中定义一个自定义热键来重命名选定的文件。因此,默认情况下,我的新热键的行为应该与F2键完全相同。也就是说,当我按下热键时,文件名应该是可编辑的,允许我键入一个新名称。但是,我不能使用F2键使windows执行此操作 原因是我正在使用默认热键进行其他操作。我经常运行一个应用程序(与AutoHotKey无关),其中UI中的按钮是使用所有F键的键挂钩触发的。关于这一点,我能找到的唯一建议是让我的自定义热键使用“发送”来提升与操作关联的默认键代码。这不起作用,因为我正在用这些热键做其

我想在文件资源管理器中定义一个自定义热键来重命名选定的文件。因此,默认情况下,我的新热键的行为应该与F2键完全相同。也就是说,当我按下热键时,文件名应该是可编辑的,允许我键入一个新名称。但是,我不能使用F2键使windows执行此操作

原因是我正在使用默认热键进行其他操作。我经常运行一个应用程序(与AutoHotKey无关),其中UI中的按钮是使用所有F键的键挂钩触发的。关于这一点,我能找到的唯一建议是让我的自定义热键使用“发送”来提升与操作关联的默认键代码。这不起作用,因为我正在用这些热键做其他事情。我需要的是一个解决方案,使文件可以重命名而不发送F2键码

 ^+!R::
Send {F2} ;This won't work for me
return

实际上可以使用原始热键,只需在不希望被send命令触发的热键之前添加
$
。另外,使用特定于应用程序的热键也是减少可能冲突的一个好主意。
试试这个:

#If winActive("ahk_exe Explorer.EXE") 

^+!R::
    send {F2}
return

$F2::
    send {down}
return  
如果您有一个应用程序全局无条件地扫描F2键,并且您无法重新定义它,那么您在AHK中就无能为力了。因此,理想情况下,您应该摆脱该应用程序,使用例如AHK实现相同的功能,或者找到一些解决方法。
在这种情况下,最简单的解决方法是重命名文件的替代方法:

^+!R::
    send {AppsKey}
    sleep 100
    send {m}
return

这不起作用,其行为与只按F2键没有区别。按^+!R热键仍然会导致应用程序中的keyhandler事件,这会使它认为应用程序中按下了按钮。此外,该文件不可重命名。@Bernoullizard啊,也许我没抓住要点-所以你有其他应用程序全局“侦听”F2,而不管哪个应用程序处于焦点?我只是尝试了一下,但这个建议仍然不起作用。即使文件资源管理器处于活动状态,如果另一个应用程序正在运行,它仍会看到F2键事件并相应地作出响应。我需要的是一些函数或dll方法,我可以直接调用这些函数或dll方法以使所选文件重命名。作为旁注,不应该使用,除非确实需要。应在这种情况下使用。您可以从文档中了解
#If
的缺点。当然,在这样一个小脚本中,您很可能不会遇到任何问题,但是使用预期的#指令仍然是一个很好的实践。我明白了,这会自动右键单击->重命名。这并不像我所希望的那样干净,但这很有效,并且完成了。谢谢FWIW,我想更改应用程序全局扫描F键的方式,但我们不允许这样做。您可以使用COM获取当前选定的文件,然后以编程方式重命名它,而不仅仅是使用普通的Windows重命名。这是你感兴趣的东西吗?@0x464e,是的,听起来像是我想象的那样。重命名文件的COM命令是什么?