Thunderbirdから「-no-remote」や「MOZ_NO_REMOTE」の問題を気にせずにFirefoxを起動するためのopenFx.exeが完成? [メール投稿]
ThunderbirdからFirefoxを起動できないし、FirefoxからThunderbirdを起動できない。:正己の異論・反論(雑感):So-netブログ を見て:正己の異論・反論(雑感):So-netブログ
それで、「Set MOZ_NO_REMOTE=」の後にFirefoxを起動するbatファイルであるが、次のように記述すれば良さそうである。@echo offこのbatファイル(例えばopenFx.bat)を【Batch To Exe Converter】でexeファイル(例えばopenFx.exe)にして、【ThunderBirdに任意のブラウザを関連付ける:G'sのだらだらぐーたら日記 on blog】に書いてある方法で、指定すれば良い。
Set MOZ_NO_REMOTE=
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" "%1"
exit
しかし、これで問題が解決したと思ったら、そうではなかった。
試しに、ThunderbirdからGoogleニュースのRSSフィードのリンクをクリックしたら、予定外のページが表示された。表示されたページのURLを見たら、リンクしたURLとも、GoogleニュースのRSSフィードのURLからジャンプするニュースサイトのURLでもない。調べた結果、"%1"でちゃんとURLが私の作ったopenFx.exeに渡されてなかった。「=」や「&」があるとその前で切れてしまうようである。そんなURLはたくさんある。この件は問題が解決してない。だから、私はopenFx.exeを使ってない。
『「=」や「&」があるとその前で切れてしまう』というのはopenFx.batをopenFx.exeにコンパイルする際に【Batch To Exe Converter】を使ったことが問題だったようで、試しに、コマンドプロンプトで、次のURLを引数にして実行してみた。
"https://www.google.co.jp/search?q=AKB48&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2"
ちゃんと""で囲んである。開いたページのアドレスバーを見たら、openFx.batの方は引数の全てが表示されているのに対して、openFx.exeの方は「q=AKB48」の所までしか表示されてない。"&"以降を消していたのはThunderbirdでもcmd.exeでもopenFx.batでもなく、openFx.exeだった。
それで、【Batch To Exe Converter】を使ってopenFx.batをopenFx.exeにコンパイルするのではなく、openFx.batを実行するJScriptファイル(openFx.js)を作って、openFx.jsを【MakeExe】を使ってexeファイル(openFx.exe)に変換して、Thunderbird内のリンクをクリックした時にopenFx.exeが起動するようにしてみた。今の所、問題なく動作している。Firefoxが起動中でも、問題なく別タブで新たなページを開くことができる。スクリプトは次の通り。
まずはopenFx.bat。
@echo off
Set MOZ_NO_REMOTE=
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" %*
exit
Set MOZ_NO_REMOTE=
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" %*
exit
続いてopenFx.js。
var shell = new ActiveXObject("WScript.Shell");
var openFx = "\"C:\\(openFx.batの入ってるディレクトリのパスで\を\\にしたもの)\\openFx.bat\"";
var geturl = WScript.Arguments;
var openurl = geturl(0);
openurl = "\"" + openurl + "\"";
// shell.Popup(openurl); // openFx.batの引数を確認したければ有効に
var command = openFx + "\ " + openurl;
// shell.Popup(command); // 実行されるコマンドを確認したければ有効に
shell.run(command)
var openFx = "\"C:\\(openFx.batの入ってるディレクトリのパスで\を\\にしたもの)\\openFx.bat\"";
var geturl = WScript.Arguments;
var openurl = geturl(0);
openurl = "\"" + openurl + "\"";
// shell.Popup(openurl); // openFx.batの引数を確認したければ有効に
var command = openFx + "\ " + openurl;
// shell.Popup(command); // 実行されるコマンドを確認したければ有効に
shell.run(command)
このopenFx.jsを【MakeExe】内のmakewin.exeでopenFx.exeに変換した。ちなみにMakeExeはコンパイラではないらしい(【MakeExeはコンパイラではありません » Jeans & Development】)。
JScriptファイルは初めて作ったので、間違っている所があるかもしれない。ネットで検索して見つけたサイトで他の書き方をしている所もあるし…。でも、とりあえずは動いている。これは忘れた時のためのメモ。
JScriptよりもVBScriptで作った方が動作が早いならVBScriptで作りたいが、能力不足で断念。また不満が生じたら、openFx.batを正常にopenFx.exeにコンパイルする方法を含めて考える。