BCB, OpenOffice, OLE et impression (problème propertyvalue)
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 :
Code:
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); |
Mais j'ai un problème sur le propertyValue : quand j'en arrive à la ligne
Code:
1 2
|
dispatcher.OleFunction("executeDispatch", frame, ".uno:Printer", "", 0, propertyValue); |
j'ai une erreur "raised exception class EOleSysError with message "le type ne correspond pas"".
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 :)