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.