MozillaZine

Running applications

From MozillaZine Knowledge Base

(Difference between revisions)
Revision as of 16:47, 9 December 2004
Asqueella (Talk | contribs)
(Oops in code)
<-- Previous diff
Revision as of 03:16, 19 December 2004
Asqueella (Talk | contribs)

Next diff -->
Line 1: Line 1:
 +{{extdev}}
 +
==Runing programs== ==Runing programs==
This page describes how to run other programs from your JavaScript code, using Mozilla XPCOM interfaces. This page describes how to run other programs from your JavaScript code, using Mozilla XPCOM interfaces.
Line 32: Line 34:
*[http://xulplanet.com/references/xpcomref/ifaces/nsILocalFile.html nsILocalFile interface] *[http://xulplanet.com/references/xpcomref/ifaces/nsILocalFile.html nsILocalFile interface]
*[http://xulplanet.com/references/xpcomref/ifaces/nsIProcess.html nsIProcess interface] *[http://xulplanet.com/references/xpcomref/ifaces/nsIProcess.html nsIProcess interface]
 +
 +[[Category:Development]]

Revision as of 03:16, 19 December 2004

This page is part of the extension development documentation project.

Ask your questions in MozillaZine Forums. Also try browsing example code.

Note: development documentation is in process of being moved to Mozilla Development Center (MDC).

Contents

Runing programs

This page describes how to run other programs from your JavaScript code, using Mozilla XPCOM interfaces.

There are two ways to run external programs. The first is to use nsILocalFile::launch() method, the second is to use nsIProcess interface.

nsILocalFile::launch()

This method has the same effect as if you double clicked the file, so for executable files, it will just run the file without any parameters. It may not be implemented on some platforms, so make sure your this method is implemented on your target platforms. It seems to be implemented on Windows.

For more information on nsIFile/nsILocalFile, see File IO.

nsIProcess

The recommended way is to use nsIProcess interface. It is as easy as:

// create an nsILocalFile for the executable
var file = Components.classes["@mozilla.org/file/local;1"]
                            .getService(Components.interfaces.nsILocalFile);
file.initWithPath("c:\\myapp.exe");

// create an nsIProcess
var process = Components.classes["@mozilla.org/process/util;1"]
                            .getService(Components.interfaces.nsIProcess);
process.init(file);

// Run the process.
// If first param is true, calling process will be blocked until
// called process terminates. 
// Second and third params are used to pass command-line arguments
// to the process.
var args = ["argument1", "argument2"];
process.run(false, args, args.length);

References