Autohotkey 我有一个AHK脚本,可以使用7-zip提取文件夹。为什么它不起作用?

Autohotkey 我有一个AHK脚本,可以使用7-zip提取文件夹。为什么它不起作用?,autohotkey,Autohotkey,当按下ctrl+ALT+Left时,下面的AHK脚本应该使用7-zip来提取文件夹。当您手动右键单击文件夹,然后键入“7eee”,然后按enter键时,文件夹将被提取。我想模拟一下,不用右键单击,而是使用键盘快捷键。我尝试了两种方法: ;alt + ctrl !^LButton:: blockinput on send {LButton}{RButton}7eee{enter} blockinput Off return 我还尝试: ;alt + ctrl !^LButton:: temp =

当按下ctrl+ALT+Left时,下面的AHK脚本应该使用7-zip来提取文件夹。当您手动右键单击文件夹,然后键入“7eee”,然后按enter键时,文件夹将被提取。我想模拟一下,不用右键单击,而是使用键盘快捷键。我尝试了两种方法:

;alt + ctrl
!^LButton::
blockinput on
send {LButton}{RButton}7eee{enter}
blockinput Off
return
我还尝试:

;alt + ctrl
!^LButton::
temp = %clipboard%
KeyWait, LButton, D
send {LButton}
sleep,100
Send, {Ctrl Down}c{Ctrl Up}
file = %clipboard% ;get file address
clipboard = %temp% ;restore clipboard
outdir := getdir(file)
if (A_Is64bitOS = 1)
{
runwait, "C:\Program Files\7-Zip\7z.exe" x "%file%" -o"%outdir%" -y,,hide
}
else
{
runwait, "C:\Program Files (x86)\7-Zip\7z.exe" x "%file%" -o"%outdir%" -y,,hide
}
msgbox, 7zip has finished extracting "%file%".
return
getdir(input)
{
SplitPath, input,,parentdir,,filenoext
final = %parentdir%\%filenoext%
return final
} 
编辑:

我发现了一些有效的方法:

#IfWinActive, AHK_EXE Explorer.exe
^e::
temp = %clipboard%
Send, {Ctrl Down}c{Ctrl Up}
file = %clipboard% ;get file address
clipboard = %temp% ;restore clipboard
outdir := getdir(file)
if (A_Is64bitOS = 1)
{
runwait, "C:\Program Files\7-Zip\7z.exe" x "%file%" -o"%outdir%" -y,,hide
}
else
{
runwait, "C:\Program Files (x86)\7-Zip\7z.exe" x "%file%" -o"%outdir%" -y,,hide
}
msgbox, 7zip has finished extracting "%file%".
return
getdir(input)
{
SplitPath, input,,parentdir,,filenoext
final = %parentdir%\%filenoext%
return final
}
#If

但是我不喜欢消息框,我希望有一个进度条或指示它正在提取。

马上,您的问题可能是在释放Alt/Ctrl之前热键会触发,从而产生不同的和弦(例如Ctrl+Alt+7)。在AutoIt中,我倾向于在发送宏键之前发送一个释放修改键的信号。另一个问题可能是菜单打开的速度不够快,7eee无法触发,在这种情况下,您可能希望在菜单之间休眠或增加发送暂停。第7-30行的作用是什么?它们是无法访问的代码。你到底在寻求什么帮助?似乎你有两种方法,如果没有人熟悉你的工作,这两种方法都很难理解。我的意思是,例如
7eee
到底应该是什么?我可以猜到它应该触发一些快捷方式,但我只能猜到这些。@0x464e请阅读我在帖子中对
7eee
@YellowAfterlife的描述。我将睡眠延迟从100增加到1000。仍然没有发生任何事情。@0x464e是的,我现在意识到脚本中有两种方法。我从另一个论坛上复制了这段代码。我尝试了
返回
行之前的所有操作,也尝试了它之后的所有操作,但仍然没有成功。一方面,您的问题可能是,在释放Alt/Ctrl之前热键会触发,从而产生不同的和弦(例如Ctrl+Alt+7)。在AutoIt中,我倾向于在发送宏键之前发送一个释放修改键的信号。另一个问题可能是菜单打开的速度不够快,7eee无法触发,在这种情况下,您可能希望在菜单之间休眠或增加发送暂停。第7-30行的作用是什么?它们是无法访问的代码。你到底在寻求什么帮助?似乎你有两种方法,如果没有人熟悉你的工作,这两种方法都很难理解。我的意思是,例如
7eee
到底应该是什么?我可以猜到它应该触发一些快捷方式,但我只能猜到这些。@0x464e请阅读我在帖子中对
7eee
@YellowAfterlife的描述。我将睡眠延迟从100增加到1000。仍然没有发生任何事情。@0x464e是的,我现在意识到脚本中有两种方法。我从另一个论坛上复制了这段代码。我尝试了
返回
行之前的所有操作,也尝试了之后的所有操作,但仍然没有成功。