为提升您的使用体验,本站正在维护,部分功能暂时无法使用。如果本站文章无法解决您的问题,您想要向社区提问的话,请到 Twitter 上的 @FirefoxSupport 或 Reddit 上的 /r/firefox 提问,我们的支持社区将会很快回复您的疑问。

搜索 | 用户支持

防范以用户支持为名的诈骗。我们绝对不会要求您拨打电话或发送短信,及提供任何个人信息。请使用“举报滥用”选项报告涉及违规的行为。

详细了解

From a script (e.g. REXX or BAT) how can I tell if Firefox is up and running?

more options

System: Windows 7 Ultimate x64

I'm trying to open Firefox with multiple tabs open at one time using a program, which reads a configuration file (XML). I discovered when using the "-new-tab" command line parameter, I get one windows for each URL instead of one window with multiple tabs.

I can get it to work IF Firefox is already up and fully running. In other words its frames exist and are visible. If Firefox is only running (say in the tasklist) but not yet visible, the user again gets one window for each URL (e.g. 5 URLs = 5 Firefox windows) instead of 1 window with 5 tabs.

Thus I've been wondering is there a method in Windows or using Firefox to tell from a script (e.g. REXX, BAT, Perl, etc) if Firefox is completely visible and running, so when you a script uses the "-new-tab" parameter the tab appears instead of a window (per URL).

System: Windows 7 Ultimate x64 I'm trying to open Firefox with multiple tabs open at one time using a program, which reads a configuration file (XML). I discovered when using the "-new-tab" command line parameter, I get one windows for each URL instead of one window with multiple tabs. I can get it to work IF Firefox is already up and fully running. In other words its frames exist and are visible. If Firefox is only running (say in the tasklist) but not yet visible, the user again gets one window for each URL (e.g. 5 URLs = 5 Firefox windows) instead of 1 window with 5 tabs. Thus I've been wondering is there a method in Windows or using Firefox to tell from a script (e.g. REXX, BAT, Perl, etc) if Firefox is completely visible and running, so when you a script uses the "-new-tab" parameter the tab appears instead of a window (per URL).

由Bertram_Moshier于修改

所有回复 (3)

more options

You can either send

Either way, the end result is the same: Firefox starts if it wasn't already running, and the links open each in a separate tab.

From your description, it sounds like you're doing the following instead.

This causes Firefox to start if it wasn't already running, open a new tab with Wikipedia in it in the main window, then open a new window with the remaining links, each in their own tab.


To use a batch file to check if Firefox is running,

tasklist /fi "IMAGENAME eq firefox.exe" 2>NUL | find /i /n "firefox.exe">NUL / if %ERRORLEVEL%==1 goto nofirefox

Where the :nofirefox section of your batch file performs whatever actions you want in that case.

more options

Hello and thank you for your reply,

Now I wish I hadn't "cleaned" up my question to make it easier to read, but instead included examples. In my case, the initial firefox.exe command I used was:

cmd /C start "FFXI Firefox" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "http://wiki.ffxiclopedia.org/wiki/Main_Page" -new-tab "http://wiki.ffxiclopedia.org/wiki/Category:Combat_Skills" -new-tab "file:///C:/Users/Bertram Moshier/Programs/FFXI/FFXI_Skill_Caps.html" -new-tab "http://wiki.ffxiclopedia.org/wiki/Skill_Ups:_A_Guide_by_Kyrial" -new-tab "http://www.mithrapride.org/vana_time/" -new-tab "http://wiki.ffxiclopedia.org/wiki/Dragoon" "http://ffxi.somepage.com/mobdb/" -new-tab "http://www.ffxiah.com/item/4558/yagudo-drink" -new-tab "http://greatbigsea.guildlaunch.com/forums/index.php?gid=108403" -new-tab "http://guildwork.com/games/ffxi/shouts"

As you can see in this version I put "-new-tab" in front of each URL and the result, since firefox version 9.0.1 has been:

1) If firefox.exe is fully up and running a tab for each URL opens in one window. 2) If firefox.exe is not fully up and running a window for each URL opens with only one tab.

So, ah, I have been trying the -new-tab method from the start. Recently, I tried removing the -new-tab and it has been working, but I think that is more of a fluke than correctly working, as it goes against the documentation.

As for tell if firefox is up and running, thanks! I've been using the following code, which is similar to yours. What I found, though, is simply having firefox.exe up and running in advance (or starting it) is NOT enough. Like your code, mine, tells if it is running in the Window's tasklist. Yet, my experience, thus far, has been until the firefox window appears, you still get the multiple windows for each "-new-tab" you send. Only if firefox.exe is already FULLY up and running with its windows visible does the "-new-tab" work per the documentation.

Here is the core code I've been using (using REXX) -- this is static code on the URL and not the XML configuration version.

NOTE: I think it is basically the same as your code, but longer . . . . My hope was the code would wait till firefox would be up enough for the "-new-tab" to work, which I find to be between 8 and 15 seconds depending upon the system. Again what I discovered is simply having the tasklist command show firefox.exe running is NOT enough. Well, this is true on my Windows 7 x64 system (Firefox 9.0.1 - 16)

firefox_found = 0

FFXI_Website_Queue = 'FFXI_Website' rc = rxqueue('delete',FFXI_Website_Queue) rc = rxqueue('create',FFXI_Website_Queue) rc = rxqueue('set',FFXI_Website_Queue)

rc = !!Firefox_Exists() if rc = 0 then do

 'cmd /C start /D "C:\Program Files (x86)\Mozilla Firefox\" "FFXI Firefox" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"'
 rc = 0
 do until rc = 1
   rc = !!Firefox_Exists()
   call SysSleep(1)
   end
 end

'cmd /C start "FFXI Firefox" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "http://wiki.ffxiclopedia.org/wiki/Main_Page" -new-tab "http://wiki.ffxiclopedia.org/wiki/Category:Combat_Skills" -new-tab "file:///C:/Users/Bertram Moshier/Programs/FFXI/FFXI_Skill_Caps.html" -new-tab "http://wiki.ffxiclopedia.org/wiki/Skill_Ups:_A_Guide_by_Kyrial" -new-tab "http://www.mithrapride.org/vana_time/" -new-tab "http://wiki.ffxiclopedia.org/wiki/Dragoon" -new-tab "http://ffxi.somepage.com/mobdb/" -new-tab "http://www.ffxiah.com/item/4558/yagudo-drink" -new-tab "http://greatbigsea.guildlaunch.com/forums/index.php?gid=108403" -new-tab "http://guildwork.com/games/ffxi/shouts"'

rc = rxqueue('delete',FFXI_Website_Queue) call !!EOJ 0

/* >>>>>>>>>>>>>>>>>>>> Insert your subroutines here <<<<<<<<<<<<<<<<<<<< */

/*------------------------------------------------------------------------*\ | | | Subroutine section | | | \*------------------------------------------------------------------------*/ !!Firefox_Exists: 'tasklist /V /FI "IMAGENAME eq firefox.exe" | RxQueue' FFXI_Website_Queue '/FIFO'

do while queued() <> 0

 parse pull Image_Name PID Session_Name Session_Number Memory_Usage Status User_Name CPU_Time Window_Title
 if Image_Name = 'firefox.exe' then do
   firefox_found = 1
   leave
   end
 end

return firefox_found

more options

Bertram_Moshier wrote:

Only if firefox.exe is already FULLY up and running with its windows visible [...]

I'm pretty sure a simple batch file can't check if the Firefox window is visible, only if the process is running. If you're launching Firefox via the batch file as well, you can add a 15-second delay with timeout /t 15 /nobreak

Bertram_Moshier wrote:

cmd /C start

That's why you get separate windows. When launching firefox.exe directly, it behaves normally. The /b parameter of the start command doesn't help, so I have no suggestions for making your particular method work.

If you detail your exact requirements, we may be able to suggest a different way to do what you want. As it is, I don't see what you have to gain from this convoluted command line method.
If the point is just to open several sites in separate tabs, you can bookmark all the sites into a single folder, then place that folder on the Bookmarks Toolbar. It would then take you 1 left-click on the Firefox icon to launch it, and 1 middle-click on the folder on the Bookmarks Toolbar to open all those bookmarks in separate tabs.