2

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

1 回答 1

0

对我来说,您的脚本的问题似乎是runwait使脚本停止正在运行 Firefox 的当前线程。

然后该线程等待 Firefox 关闭给你“STILL WAITING”......然后当它关闭下一行时IfWinExist ahk_class MozillaWindowClass,它将不存在,使脚本跳到Exitapp

 

当 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

 

希望能帮助到你

于 2015-01-20T21:04:55.813 回答