Merci Bernard, mais je n'ai pas su faire marcher comme ça. En fait l'application java crée un nouveau document à partir d'un modèle, et je n'ai pas trouvé comment récupérer le nom du document courant. En fait, il n'en a pas encore.
Et j'ai vu aussi que le dispatcher fonctionne en mode asynchrone, ce qui pourrait poser encore d'autres problèmes. J'ai trouvé une autre façon de faire, inspirée d'un exemple qui consistait à lancer XRay: http://www.oooforum.org/forum/viewtopic.phtml?t=23333 Donc voici mon implémentation, qui marche très bien, finalement: -------------------------------- public Object executeCommand(String strCmdName) throws FusionException { if (!this.macroAllowed) { // cette propriété est initialisée à partir d'une variable d'environnement this.log("executeCommande: excécution des macros non autorisée"); return (Object)null; } try { XScriptProviderSupplier xScriptPS = (XScriptProviderSupplier)UnoRuntime.queryInterface(XScriptProviderSupplier.class, this.aDoc); XScriptProvider xScriptProvider = xScriptPS.getScriptProvider(); XScript xScript = xScriptProvider.getScript("vnd.sun.star.script:" + strCmdName); short[][] aOutParamIndex = new short[1][1]; Object[][] aOutParam = new Object[1][1]; return xScript.invoke(new Object[0], aOutParamIndex, aOutParam); } catch (ScriptFrameworkErrorException e) { this.log("executeMacro - Commande <"+strCmdName+"> non exécutable: "+e.getMessage()); } catch (Exception e) { throw new RuntimeException(e); } return (Object)null; } -------------------------------- Et on l'utilise comme ça: monDocument.executeCommand("Standard.Fusion.End?language=Basic&location=document"); (ou "location=application" si la macro est installé sur le poste). Et pas besoin de connaître le nom du document courant :-). Bien sûr, ça fait un gros trou de sécurité côté serveur. Mais ça se gère. Bien cordialement et encore merci pour vos réponses. Ph. -- -----Message d'origine----- De : Bernard Marcelly [mailto:[email protected]] Envoyé : mardi 3 mars 2009 21:29 À : [email protected] Objet : Re: [prog] Re: [dev-fr] Appeler une macro depuis Java (oui, encore :-) Bonsoir, Message de Jean-Baptiste Faure date 2009-03-03 19:34 : > > Le 03.03.2009 17:40, ALLART Philippe a écrit : >> bonjour, >> >> j'ai besoin d'apppeler une macro basic depuis une application java. >> >> La macro n'ai jamais exécutée. Elle se trouve dans le document courant >> Depuis l'application Java, je l'appelle avec le nom >> "macro:///Standard.Module1.StartFusion". >> Cette séquence "macro:///Standard.Module1.StartFusion" appelle une macro qui se trouve dans la bibliothèque Standard de "Mes Macros". Pour appeler une macro dans un document déjà chargé, il faut ajouter le nom court de ce document: "macro://NomDuDocument/Standard.Module1.StartFusion" Le nom court est le nom sans l'extension. Bernard --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
