OVH Cloud OVH Cloud

Controler Word depuis un programme C++ (COM)

2 réponses
Avatar
eric.frigot
Bonjour,

je cherche quelques informations sur la façon dont le C++ peut
controler Microsoft Word.

En fait, c'est assez simple, j'écris un programme en Java qui doit
réaliser deux tâches avec Word :
- Ouvrir une page html ou htm
- Sauvegarder cette page au format doc

J'utilise JNI pour apeller des méthodes écrites dans un autre
language. Mais ensuite il me faut écrire les bonnes méthodes en C++,
je ne suis pas très au fait des librairies microsoft et de ce que je
pourrais utiliser pour controler facilement Microsoft Word.

Si vous avez quelques infos à me donner ou des liens traitant de ce
sujet, merci d'avance.

Eric.

2 réponses

Avatar
Patrick Philippot
Eric Frigot wrote:
Bonjour,

je cherche quelques informations sur la façon dont le C++ peut
controler Microsoft Word.



Une recherche sur Google avec les mots-clé : word automation "visual
C++" donne des résultats immédiats.

Voir par exemple
http://codeguru.earthweb.com/interface/WordAutomation.html et les
exemples du MSDN (même mots-clé)

Ou encore

http://support.microsoft.com/support/kb/articles/Q196/7/76.ASP "Office
Automation Using Visual C++"
http://support.microsoft.com/support/kb/articles/Q238/9/72.ASP "INFO:
Using Visual C++ to Automate Office"

Une fois la mécanique d'instantiation de l'objet Word comprise, reste à
savoir quelles méthodes appeler et quelles propriétés utiliser. Si vous
êtes familier avec le modèle objet de Word, aucun problème. Sinon,
rechercher dans le MSDN "Word Object Model".

--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
(replace .xx with .fr when replying by e-mail)
Avatar
eric.frigot
Merci pour cette rapide et complète réponse, finalement, j'ai pu m'en
sortir directement en Java avec quelques lignes de codes :

import com.jacob.com.*;
import com.jacob.activeX.*;

ActiveXComponent word = new ActiveXComponent("Word.Application");
Object documents = word.getProperty("Documents").toDispatch();
Object document = Dispatch.call(documents,"Add",
"c:test.html").toDispatch();
Object resultado = Dispatch.call(document,"SaveAs", new
Variant("c:test.doc"), new Variant(0));
word.invoke("Quit", new Variant[] {});

Eric.