Bonjour,
Je cherche à sélectionner une imprimante avec l'API d'OpenOffice en passant par les fonctions d'automation OLE de C++Builder.
Je me suis d'abord basé sur la FAQ Delphi mais le résultat n'était pas concluant (peut être un problème de traduction... )
J'ai alors essayé d'utiliser le dispatcher (me basant sur une macro) pour afficher la fenêtre de sélection d'imprimante. Je suis arrivé à ça :
Mais j'ai un problème sur le propertyValue : quand j'en arrive à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Variant propertyValue[1]; Variant CoreReflection; Variant dispatcher; Variant frame; AnsiString printer_name = "PDFCreator"; //exemple pour le test frame = document.OleFunction("getCurrentController").OleFunction("getFrame"); dispatcher = ptr_uno->uno_manager.OleFunction("createInstance", "com.sun.star.frame.DispatchHelper"); CoreReflection = ptr_uno->uno_manager.OleFunction("createInstance", "com.sun.star.reflection.CoreReflection"); CoreReflection.OleFunction("forName", "com.sun.star.beans.PropertyValue").OleFunction("createObject", propertyValue); propertyValue[0].OlePropertySet("Name", "Printer"); propertyValue[0].OlePropertySet("Value", printer_name.c_str()); dispatcher.OleFunction("executeDispatch", frame, ".uno:Printer", "", 0, propertyValue); int Bounds[2] = {0,-1}; //L'impression avec l'imprimante par défaut fonctionne parametres = VarArrayCreate(Bounds, 1, varVariant); document.OleFunction("print", parametres);
j'ai une erreur "raised exception class EOleSysError with message "le type ne correspond pas"".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dispatcher.OleFunction("executeDispatch", frame, ".uno:Printer", "", 0, propertyValue);
Est-ce que quelqu'un voit où je me plante ?
A moins que quelqu'un arrive à faire fonctionner l'exemple de la FAQ Delphi avec C++Builder ?
Merci d'avance
Partager