IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire un appel Microsoft COM depuis javascript/Firefox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Par défaut Faire un appel Microsoft COM depuis javascript/Firefox
    Bonjour,

    J'ai un exécutable Windows qui est referencé comme objet COM (anciennement OLE Automation). Autrement dit, il est "pilotable" par une autre application.

    Je voudrais le piloter depuis une appli web executée dans firefox.

    J'ai trouvé des exemples de code javascript qui lancent un executable windows (cf. 2ème extrait de code en fin de message), mais ce n'est pas ça que je souhaite faire.
    Si je prends l'exemple de word, je voudrais, pour une instance de word déjà lancée (je ne veux pas reforker un process word.exe) lui faire ouvrir un nouveau document et taper du texte.

    Si j'étais dans un programme local en c#, cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Word.DocumentClass wd = new Word.DocumentClass();
    wd.Activate();
    wd.Content.InsertAfter("Salut");
    Mais comme je suis en javascript, je ne sais pas comment faire. Comme indiqué plus haut, le seul code que j'ai trouvé lance un exécutable. Cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    var exe = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
    exe.initWithPath(path);
    var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
    run.init(exe);
    var parameters = [""];
    run.run(false, parameters, parameters.length);
    Pouvez-vous m'aider ? Est-ce que quelqu'un a une idée sur la question ?

    Cordialement,

    Phil

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    tu vas te heurté à un pb de sécurité.

    OLE COM sont des technos de l'OS Windows pour les applications tournant sur cet OS.

    les applis sont installé sur la machine et connue du système. lors de l'installation une vérification des droits ont été fait par l'OS pour éviter que n'importe qui fasse n'importe quoi. en contre partit l'OS donne accès à OLE COM

    le navigateur est bien une application installé sur la machine. à priori cette application peut utiliser OLE COM (IE le fait)

    lorsque tu ouvre un document word MsWord va vérifier que dans le document en question il n'y ait pas de macro et s'il y en a il va demander à l'utilisateur s'il prend ou non le rsique de les exécuter.

    mais pour en arriver là le document doit être sur la machine. et au moment de l'y mettre on averti l'utilisateur sur les risques qu'il prend.


    avec le navigateur on ouvre un document en donnant une référence qui est à l'exétérieur. du coup on va le télécharger mais on ne va pas demander à l'utilisateur si veu le stocker sur son disque, on ne va pas non plus l'avertir sur les risques. on concidère que si l'utilisateur veux ouvrir un page il sait ce qu'il fait. tout comme un document word peut contenir des macros une page web peut contenir de JS

    mais contrairement à MsWord le navigateur ne vas pas demander à l'utilisateur s'il veut exécuter le code JS. il l'éxécute.

    du coup si aucune précaussion n'est prise, le code JS pourait endomager la machine.

    pour éviter cela le navigateur vas isoler le contenu du document (code js compris) de tout le reste de la machine.

    on peut donc concidérer que MsWord et le document ouvert s'exécute sur la machine de l'utilisateur avec un accès à tout ce que le systeme met à disposition.

    alors que dans le web le navigateur s'éxécute sur la machine avec un accès complet au services de celle-ci mais le document lui s'exécute dans un espace restraint (la machine virtuelle javascript) qui est isolé du reste de la machine. et qui donc se voit interdit nombre de services de l'OS. impossible d'accéder au fichiers de la machine, interdit d'appeler les services de l'os etc. les seuls éléments auquels à accès une page html sont ceux que le navigateur lui met à disposition.

    pour ton problème il existe une solution et je te conseille de ne pas l'utiliser.
    elle consciste à développer un extension pour FF qui mettra à disposition de JS une API permettant d'appeler OLE COM.
    je le déconseille car si tu installe une telle extension c'est comme si tu possais les bijoux de ta famille sur le trotoir devant chez toi. ça revient à ouvrir toute ta machine à tout les intrusions.

    A+JYT

Discussions similaires

  1. [2.3.1] Appel à des dataset depuis javascript
    Par Bouillou dans le forum BIRT
    Réponses: 6
    Dernier message: 06/02/2009, 08h36
  2. Appeler un webservice depuis javascript
    Par Flackou dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/08/2008, 10h14
  3. Appeler une DLL depuis Javascript
    Par troubleshooting dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/07/2008, 14h45
  4. Réponses: 0
    Dernier message: 02/11/2007, 17h22
  5. appeler une servlet depuis javascript
    Par root76 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 22/05/2007, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo