我有一个脚本用于打开包含自定义快捷方式的Firefox,并在关闭浏览器时关闭。最近,当我第一次打开它并尝试使用快捷方式时,它在我重新加载脚本之前不起作用,即使脚本仍在运行。我有一段时间没有改变脚本中的任何内容。谁能告诉我发生了什么事?
谢谢, 埃伦
Menu, Tray, Icon, C:\Program Files\Mozilla Firefox\firefox.exe
SetTitleMatchMode, 2
runwait C:\Program Files\Mozilla Firefox\firefox.exe, , max
IfWinExist ahk_class MozillaWindowClass
Return
ExitApp
Return
#SingleInstance Force
#installKeybdHook
#Persistent
Return
#ifWinActive Mozilla Firefox
^!b::send, ^+b
^b::send, ^d ; bookmark page]
^n::send, ^t ; open new tab
!c::send, ^w ; close current tab
^d::send, ^!t ; duplicate tab
^u::send, ^+t ; undo close tab
!d::send, ^j ; open downloads
^e::
MouseClick, left, 33, 44
Sleep, 100
MouseClick, left, 33, 230
Sleep, 100
return
^r:: ; recent pages
MouseClick, left, 79, 76
return
!a:: ; click on address bar
MouseClick, left, 368, 73
return
^q:: ; roboform
MouseClick, left, 864, 722
return
^BS::send, +{Backspace} ; forward
Up::send, ^{+} ;zoom in
Down::send, ^{-} ;zoom in
::abc::about:config
#ifWinActive
答案 0 :(得分:0)
对我来说,脚本的问题似乎是runwait
使脚本停止运行firefox的当前线程。
然后该线程等待firefox关闭,给你“STILL WAITING”...然后当它关闭时,下一行是IfWinExist ahk_class MozillaWindowClass
并且它不会存在使脚本跳到Exitapp
< / p>
当RunWait处于等待状态时,可以通过热键,自定义菜单项或计时器启动新线程。
当使用RunWait
时,某些程序即使仍然在运行,也会立即返回,这些程序会产生另一个进程。通过设置脚本的方式,可能会阻止RunWait偶尔进入等待状态。
这将使您无法启动新线程,因为autohotkey不是多线程的......
所以我说使用类似WinWaitClose
的东西,因为它也可以让你发布新的线程
当WinWaitClose处于等待状态时,可以通过热键,自定义菜单项或计时器启动新线程。
这样的事情:
Run, C:\Program Files\Mozilla Firefox\firefox.exe, , max
WinWait, ahk_class MozillaWindowClass
WinWaitClose ; Wait for the exact window found by WinWait to be closed.
Exitapp
希望有所帮助