Envoyé par : Lgaut
Date : 21/02/2008 17:22
Bonjour à tous,
Je debute avec XUL et je souhaiterais ouvrir un script sh depuis un bouton.
J'ai testé ça mais rien ne se passe.
code
function executeFile() {
const path = "monfscript sh"
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile)
file.initWithPath(path)
file.launch()
}
merci d'avance
Envoyé par : Paul Rouget
Date : 21/02/2008 17:53
Au lieu d'utiliser launch, utilise la méthode run de ce composant: http://www.xulplanet.com/references/xpco(..)
Attention, ton binaire c'est Bash, pas ton script.
Envoyé par : mymyoux
Date : 21/02/2008 22:35
Bonsoir, moi j'utilise ce petit bout de code pour lancer un bash :
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(path);
file.QueryInterface(Components.interfaces.nsIFile);
if (!file.exists()) {
//si le fichier n'existe pas
}else{
var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
proc.init(file);
var args=[path.substring(0,path.lastIndexOf("/")+1)];
//en général un programme reçoit son path en premier argument... moi j'avais des besoins particuliers
proc.run(false,args,args.length);
//false indique un lancement asynchrone & true un lancement synchrone (gel de l'interface)
}
attention il faut que path soit indiqué avec le chemin absolu suivant ton système d'exploitation
quelquechose genre :
Windows :
c:\monextension\monfichier.sh
Linux :
/home/monlogin/monextension/monfichier.sh
Si tu veux convertir ton addresse chrome en absolue moi j'utilise ça :
//this.id est l'id de ton extension Components.classes["@mozilla.org/extensions/manager;1"] .getService(Components.interfaces.nsIExtensionManager) .getInstallLocation(this.id) .getItemLocation(this.id).path
ce qui renvoit :
Windows :
c:\monextension
Linux :
/home/monlogin/monextension
après à toi de rajouter un / ou un \ en fonction de l'OS et la suite du chemin suivant comment est organisée ton extension
voilà
Envoyé par : Lgaut
Date : 22/02/2008 13:58
Merci beaucoup j'essaye ça et je vous dis quoi
Envoyé par : Lgaut
Date : 22/02/2008 16:52
J'ai essayé avec ce code :
code
function executeFile() {
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home/utilisateur/Bureau/monfichier.sh");
file.QueryInterface(Components.interfaces.nsIFile);
if (!file.exists()) {
//si le fichier n'existe pas
}else{
var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
proc.init(file);
var args=[path.substring(0,path.lastIndexOf("/")+1)];
//en général un programme reçoit son path en premier argument... moi j'avais des besoins particuliers
proc.run(false,args,args.length);
//false indique un lancement asynchrone & true un lancement synchrone (gel de l'interface)
}
}
mais rien de se passe lors du clique sur mon bouton et j'ai du mal à comprendre.
merci
Envoyé par : Paul Rouget
Date : 22/02/2008 17:00
Tu n'as pas écouté ce que je t'ai dit:
function executeFile() {
try {
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/bin/bash");
file.QueryInterface(Components.interfaces.nsIFile);
if (!file.exists()) {
//si le fichier n'existe pas
}else{
var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
proc.init(file);
var args=["/home/utilisateur/Bureau/monfichier.sh"];
proc.run(false,args,args.length);
}
} catch(e) {alert("Une erreur:" + e);}
}
Ça fonctionnera probablement mieux.
Envoyé par : Lgaut
Date : 22/02/2008 18:05
merci de ta réponse.
J'ai une erreur : Permission refusée d'obtenir la propriété unamedClass.classes
Envoyé par : Lgaut
Date : 22/02/2008 18:19
aprés avoir rajouté la ligne
code
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
J'obtiens :
TypeError:components.classes"@mozilla.org/process/ util;1" has no properties
EDIT: Si je faisais plus attention ca serait mieux, un espace en trop !!!
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.