如何在 Windows 中通过命令行退出 Firefox 而不强制它?

如何在 Windows 中通过命令行退出 Firefox 而不强制它?

我想从命令行退出 Firefox,而不是“强制”退出。我只想产生与在 Firefox 菜单中单击“退出”相同的效果。

根据以下内容,我似乎需要以某种方式调用“goQuitApplication”。

我尝试制作一个 xul 文件并运行它,但出现错误。我尝试从此处运行文件Mozillazine 帖子,但 Firefox 在控制台中说“TypeError: Components.classes 未定义”。

以下是该xul文件的代码:

Remote XUL Manager by Jorge Villalobos
https://addons.mozilla.org/firefox/addon/235281/

Domains with remote XUL permission: <Local files>

Loads the specified chrome:
firefox -chrome example.xul

-->

<window onload="load()"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript">
  <![CDATA[

    function load() {
      var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
        getService(Components.interfaces.nsIWindowMediator);
      var win = wm.getMostRecentWindow("navigator:browser");
      win.setTimeout("goQuitApplication()", 250);
      window.close();
    }

  ]]>
  </script>

</window>

我尝试在加载函数中简单地调用“goQuitApplication”(如果在浏览器控制台中调用,它似乎可以工作)但随后出现错误“ReferenceError:goQuitApplication 未定义”。

是否有人知道从命令行退出 Firefox 的好方法,而无需强制终止进程或关闭单个窗口?

答案1

我昨天确实遇到了这个问题。我自己也在寻找答案。如果你只打开了一个窗口(一个简单的 taskkill 行,没有 /f,这样浏览器就可以干净地关闭),这没什么大不了的,但是一旦你有两个或更多的窗口,它就会变得更加复杂,因为 taskkill 命令一次只会关闭一个窗口(除非它是最后一个关闭的窗口,否则会丢失窗口的选项卡)。

我最终编写了一个 cmd/vbs 脚本组合来彻底关闭 Firefox。脚本将检测主密码提示是否打开并关闭它(避免提示干扰 FFQuit 脚本),然后 FFQuit 脚本将激活 FF 并发送 Alt-F 键击以打开文件菜单,发送 X 以退出 Firefox。

这样您就可以快速干净地退出,所有窗口在重新启动后都会恢复。还有重新启动 FF 的选项(只需取消注释相关部分):

第 1 部分:封装的 cmd 脚本:quitFF.cmd

set FFexec=%programfiles(x86)%\Mozilla Firefox\firefox.exe
set ERRORLEVEL=

:: Check if that annoying Master Password prompt is open and close it
tasklist /FI "WINDOWTITLE eq Password Required" 2>NUL | find /I /N firefox.exe">NUL
IF "%ERRORLEVEL%"=="0" MPWDclose.vbs

FFQuit.vbs

::Optional Restart Firefox - ping is just a sneaky way of getting sleep functionality
::Uncomment REM to activate
REM ping 1.0.0.0 -n 1 -w 2000 > nul
REM start ""  "%FFexec%" & exit

第 2 部分:MPWDclose.vbs

Set MPWDclose = WScript.CreateObject("WScript.Shell")

WScript.Sleep 250
MPWDclose.AppActivate("Password Required")
WScript.Sleep 250
MPWDclose.Sendkeys "{ESC}"
WScript.Sleep 50
WScript.Quit

第 3 部分:FFQuit.vbs

Set FFquit = WScript.CreateObject("WScript.Shell")
WScript.Sleep 250
FFquit.AppActivate("- Mozilla Firefox")
WScript.Sleep 250
FFquit.Sendkeys "%F"
WScript.Sleep 100 
FFquit.Sendkeys "x"
WScript.Quit

相关内容