Problème d'ouverture d'instance en c++ builder
Bonjour à tous !
Je me suis récemment attaqué au code permettant de lancer LibreOffice pour effectuer un publipostage sans avoir besoin d'effectuer les manipulations qui lui sont d'ordinaire nécessaire. Utilisant RAD Studio, j'ai alors rencontré un problème: au moment d'ouvrir une instance, le message "Type de variable incorrect" s'affiche. Comment que ça marche ?!! Merci !
code c++:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <ComObj.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant vOOoOpenOffice, vOOoDesktop, vOOoLoadParams, vOOoDocument, vOOoPropertyValue;
try
{
vOOoOpenOffice = CreateOleObject("com.sun.star.ServiceManager");
}
catch (...)
{
// si on passe ici c'est qu'il y a une erreur
}
if (VarType(vOOoOpenOffice) == varDispatch)
{
vOOoDesktop = vOOoOpenOffice.OleFunction("createInstance", "com.sun.star.frame.Desktop");
}// permet d'ouvrir une instance existante
int Bounds[2] = {0,0};
vOOoLoadParams = VarArrayCreate(Bounds, 1, varVariant);//
vOOoPropertyValue = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
vOOoPropertyValue.OlePropertySet("Name", "ReadOnly"); // pour ReadOnly ou pour Hidden
vOOoPropertyValue.OlePropertySet("Value", true);
vOOoLoadParams.PutElement(vOOoPropertyValue, 0);
//ouverture fichier existant
// FilePath = "file://localhost/C:/essai.sxc" -- pour un fichier Calc
//ou
// FilePath = "file:///C:/essai.sxc" -- pour un fichier Calc
AnsiString FileName = "file:///C:/";
// FileName += ExtractFilePath(Application->ExeName);
FileName += "Lettre_type.odt";
//FileName = StringReplace(FileName,"<A href="file://\\","/",TReplaceFlags">\\","/",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase);
Variant vFileName = StringToOleStr(FileName);
vOOoDocument = vOOoDesktop.OleFunction("LoadComponentFromURL",vFileName,"_blank",0,vOOoLoadParams);
}
//--------------------------------------------------------------------------- |