今日一日かけて MDC、XUL Planet 等のサイトで調べてもわからなかったので質問させてください。
現在週間天気予報をモードレスダイアログボックスで表示する拡張を WindowsXP 環境下で作っています。
その拡張の機能の中に、ボタンを押すと Firefox が起動している場合に、新しいタブに気象庁の Web ページを表示するというものがあります。
ただしこの拡張はモードレスダイアログボックスで作成されるようにしていますので、Firefox 本体を終了させてしまうことができます。
現在、この拡張はユーザが Firefox をオペレーションミスなどで終了させてしまった場合に、OS のデフォルトブラウザを立ち上げて気象庁のページを表示するように暫定的にコードを書いています。コードは以下の通りです。
コード:
function dispJMA()
{
try
{
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
mainWindow.getBrowser().addTab('http://www.jma.go.jp/');
} catch(e)
{
var tempServ = Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment);
var strWinDir = tempServ.get('windir');
var strCommand = strWinDir + "\\system32\\rundll32.exe";
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(strCommand);
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["url.dll,OpenURL", "http://www.jma.go.jp/"];
process.run(false, args, args.length);
}
}
見てわかる通り、完全に Windows の環境変数と "rundll32.exe" と "url.dll" に依存したコードになっており、WindowsXP、Windows2000 でないと動作しないようになってしまっています。
これをマルチプラットフォーム化するために Firefox の起動パスを JavaScript で取得する方法を探しています。おそらく OS の機能に依存することから XPCOM インターフェースを調べればわかるんじゃないかと悪戦苦闘していたのですが、どうしてもその方法が見つかりません。
どなたか Firefox の起動パスを取得する方法をご存じの方がいらっしゃったらご教示願えないでしょうか。