diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/ja/archive/mozilla/xulrunner/commandline/index.html | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/ja/archive/mozilla/xulrunner/commandline/index.html')
-rw-r--r-- | files/ja/archive/mozilla/xulrunner/commandline/index.html | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/files/ja/archive/mozilla/xulrunner/commandline/index.html b/files/ja/archive/mozilla/xulrunner/commandline/index.html deleted file mode 100644 index c89e7ab56a..0000000000 --- a/files/ja/archive/mozilla/xulrunner/commandline/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: CommandLine -slug: Archive/Mozilla/XULRunner/CommandLine -tags: - - XUL - - XULRunner -translation_of: Archive/Mozilla/XULRunner/CommandLine ---- -<h2 id="Handling_command_line_arguments_with_XULRunner" name="Handling_command_line_arguments_with_XULRunner"> Handling command line arguments with XULRunner </h2> -<h3 id="For_Multiple_Instances_Application" name="For_Multiple_Instances_Application"> For Multiple Instances Application </h3> -<p>XULRunner でアプリケーション固有のコマンドライン引数を取得するのは、一つのインスタンスしか持たないアプリケーションでなければとても簡単です。 <a href="ja/NsICommandLine">nsICommandLine</a> オブジェクトが起動したwindowの引数を最初に渡してくれます: -</p> -<h4 id="Example" name="Example"> Example </h4> -<pre>var cmdLine = window.arguments[0]; -cmdLine = cmdLine.QueryInterface(Components.interfaces.nsICommandLine); -alert(cmdLine.handleFlagWithParam("test", false)); -</pre> -<h3 id="For_Single_Instance_Application" name="For_Single_Instance_Application"> For Single Instance Application </h3> -<p>もちろん、一つのインスタンスしか持たないアプリケーション (詳細は<a href="ja/Toolkit.singletonWindowType">toolkit.singletonWindowType</a> をご覧ください)でも、先ほど示したサンプルはアプリケーションの最初の起動時のみ有効です。しかしながら、もし最後のコマンドライン引数を取得したい(例えばファイルを開くなど)のであれば、それを可能とする解決方法はあなた用の<a href="ja/Chrome/Command_Line">command line handler</a> を作る事です。 -</p><p>単純なソリューションとしては、<a href="ja/NsIObserverService">observer service</a> を新たな引数が存在する事を通知するオブザーバとする事です。このソリューションを実装する似た方法もしくはよりよい方法としては、特定のハンドラのレジスタかアンレジスタする関数をコマンドラインハンドラサービスとして定義する事です。このアプローチは <a class="external" href="http://publicsvn.songbirdnest.com/browser/trunk/components/commandline/src/sbCommandLine.js">Songbird</a> で利用されています。 -</p> -<h4 id="Example_2" name="Example_2"> Example </h4> -<p>Command Line Handler Component を定義します: <b>components/clh.js</b> -</p> -<pre>const nsISupports = Components.interfaces.nsISupports; - -const nsICategoryManager = Components.interfaces.nsICategoryManager; -const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar; -const nsICommandLine = Components.interfaces.nsICommandLine; -const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler; -const nsIFactory = Components.interfaces.nsIFactory; -const nsIModule = Components.interfaces.nsIModule; - -const CLASS_ID = Components.ID("178cfbb6-503c-11dc-8314-0800200c9a66"); -const CLASS_NAME = "ApplicationNameCLH"; -const CONTRACT_ID = "@example.com/applicationname/clh;1"; -const CLD_CATEGORY = "m-applicationname"; - -var appHandler = { - /* nsISupports */ - QueryInterface : function clh_QI(aIID) - { - if (aIID.equals(nsICommandLineHandler) || - aIID.equals(nsIFactory) || - aIID.equals(nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - /* nsICommandLineHandler */ - handle : function clh_handle(aCmdLine) - { - var observerService = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - observerService.notifyObservers(aCmdLine, "commandline-args-changed", null); - }, - - helpInfo : " -test <value> A test attribute\n", - - /* nsIFactory */ - createInstance : function mdh_CI(aOuter, aIID) - { - if (aOuter != null) { - throw Components.results.NS_ERROR_NO_AGGREGATION; - } - - return this.QueryInterface(aIID); - }, - - lockFactory : function mdh_lock(aLock) - { - /* no-op */ - } -}; - -var appHandlerModule = { - /* nsISupports */ - QueryInterface : function mod_QI(aIID) - { - if (aIID.equals(nsIModule) || - aIID.equals(nsISupports)) - return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - /* nsIModule */ - getClassObject : function mod_gch(aCompMgr, aCID, aIID) - { - if (aCID.equals(CLASS_ID)) - return appHandler.QueryInterface(aIID); - - throw components.results.NS_ERROR_FAILURE; - }, - - registerSelf : function mod_regself(aCompMgr, aFileSpec, aLocation, aType) - { - var compReg = aCompMgr.QueryInterface(nsIComponentRegistrar); - - compReg.registerFactoryLocation(CLASS_ID, CLASS_NAME, CONTRACT_ID, - aFileSpec, aLocation, aType); - - var catMan = Components.classes["@mozilla.org/categorymanager;1"] - .getService(nsICategoryManager); - catMan.addCategoryEntry("command-line-handler", - CLD_CATEGORY, CONTRACT_ID, true, true); - }, - - unregisterSelf : function mod_unreg(aCompMgr, aLocation, aType) - { - var compReg = aCompMgr.QueryInterface(nsIComponentRegistrar); - compReg.unregisterFactoryLocation(CLASS_ID, aLocation); - - var catMan = Components.classes["@mozilla.org/categorymanager;1"] - .getService(nsICategoryManager); - catMan.deleteCategoryEntry("command-line-handler", CLD_CATEGORY); - }, - - canUnload : function (aCompMgr) - { - return true; - } -}; - -function NSGetModule(aCompMgr, aFileSpec) -{ - return appHandlerModule; -} -</pre> -<p>引数が変更された時に通知を受け取るオブザーバを作ります: <b>chrome/content/cmdline.js</b> -</p> -<pre>function CommandLineObserver() { - this.register(); -} -CommandLineObserver.prototype = { - observe: function(aSubject, aTopic, aData) { - var cmdLine = aSubject.QueryInterface(Components.interfaces.nsICommandLine); - var test = cmdLine.handleFlagWithParam("test", false); - alert("test = " + test + "); - }, - - register: function() { - var observerService = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - observerService.addObserver(this, "commandline-args-changed", false); - }, - - unregister: function() { - var observerService = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - observerService.removeObserver(this, "commandline-args-changed"); - } -} - -var observer = new CommandLineObserver(); - - -// アプリケーションの初回起動時には CommandLineObserver がまだレジストされていないため、 -// ここで通知のふりをしてあげます。 -var observerService = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); -observerService.notifyObservers(window.arguments[0], "commandline-args-changed", null); - -addEventListener("unload", observer.unregister, false); -</pre> -<p>最後に、アプリケーションのWindowにオブザーバへの参照を追加します: <b>chrome/content/window.xul</b> -</p> -<pre><?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="main" title="&window.title;" windowtype="xulmine" - style="width: 300px; height: 350px;" - persist="screenX screenY width height sizemode"> - <script type="application/x-javascript" src="cmdline.js" /> - ... -</window> -</pre> -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information"> Original Document Information </h2> -<ul><li> Author: <a class="external" href="http://legege.com">Georges-Etienne Legendre</a> -</li><li> Last Updated Date: August 21st, 2007 -</li></ul> -</div> |