为什么脚本停止工作并需要重新加载?

时间:2013-05-31 14:08:32

标签: autohotkey

我有一个脚本用于打开包含自定义快捷方式的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

1 个答案:

答案 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

希望有所帮助