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