IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ C++ BuilderConsultez toutes les FAQ

Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe C++ Builder de Developpez.

Commentez cette FAQ : Commentez

SommaireMS OfficeMS Office Généralités (7)
précédent sommaire suivant
 

La méthode GetActiveOleObject renvoie une référence à l'interface IDispatch de l'objet actif pour la classe indiquée par ClassName. ClassName est l'ID de programmation de la classe de l'objet actif dans la table des objets OLE actifs.
GetActiveOleObject permet d'accéder à cette table. Cette table permet donc de déterminer si un objet d'une classe donnée est en cours d'exécution ou non.

La méthode OleCheck, appelée par GetActiveOleObject, déclenche une exception EOleSysError si aucun objet de la classe spécifiée n'existe.

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool AppExist = true;  
Variant vMSWord; 
try 
{ 
  vMSWord = Variant::GetActiveObject("Word.Application"); 
} 
catch (EOleSysError &e) 
{ 
  AppExist = false; 
} 
if(AppExist) 
{ 
  ShowMessage("Word est en cours d'exécution."); 
} 
else 
{ 
  ShowMessage("Word n'est pas en cours d'exécution."); 
}

Mis à jour le 27 octobre 2004 Laurent Dardenne Ricky81

Vous pouvez trouver les constantes directement dans l'application en ouvrant une fenêtre Visual Basic (ALT+F11) puis en consultant l'explorateur d'objets. Une petite recherche et vous obtiendrez la valeur d'une constante à partir de son nom.
Vous pouvez également trouver une partie des constantes dans le header Excel_2k.h en ce qui concerne Excel (présent dans Include/VCL/ et vous pouvez même utiliser directement les noms des constantes dans votre programme en incluant ce fichier.

Mis à jour le 27 octobre 2004 Ricky81

Le type Variant est capable de représenter des valeurs qui changent de type dynamiquement. Alors qu'une variable de n'importe quel autre type est liée statiquement à ce type, une variable de type Variant peut prendre des valeurs de plusieurs types lors de l'exécution. Le type Variant est généralement utilisé quand le véritable type à manipuler varie ou qu'il n'est pas connu lors de la compilation. Cette souplesse se fait au dépend de la mémoire et les opérations sont substantiellement moins rapides que les opérations sur des valeurs statiquement typées.

Voici les types supportés par le Variant :

  • short
  • int
  • float
  • double
  • Currency
  • TDateTime
  • bool
  • WordBool
  • Byte
  • AnsiString&
  • char *
  • wchar_t * const
  • Ole2::IDispatch* const
  • Ole2::IUnknown* const

Mis à jour le 27 octobre 2004 Ricky81

Les paramètres facultatifs doivent être passés comme des Variants Unassigned.
Tout Variant est initialisé à Unassigned lorsqu'il est déclaré, et l'affectation de Unassigned à un Variant permet de libérer la mémoire occupée.

Exemple :

Code c++ : Sélectionner tout
1
2
3
4
Variant vMSExcel; // vMSExcel est à Unassigned 
vMSExcel = Variant::GetActiveObject("Excel.Application"); 
vMSExcel.OleFunction("Quit"); 
vMSExcel = Unassigned; // libération de la mémoire

Mis à jour le 27 octobre 2004 Ricky81

Il faut utiliser la fonction StringToOleStr

Code c++ : Sélectionner tout
extern PACKAGE wchar_t * __fastcall StringToOleStr(const AnsiString Source);

Mis à jour le 27 octobre 2004 Ricky81

Le pilotage OLE repose sur le type Variant, or le type AnsiString n'est pas supporté par le Variant. Vous pouvez par exemple passer le pointeur sur votre AnsiString grâce à la méthode c_str()ou effectuer la conversion.

Mis à jour le 27 octobre 2004 Ricky81

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.