|
|
|
|
|
- Contrôles effectués
- Gestion des erreurs
- Paramètres à passer à la méthode de l'objet COM
- Passer une chaîne à une méthode d'objet COM ou récupérer une chaîne en retour de l'appel d'une méthode d'objet COM
- Passer une structure contenant une chaîne à une méthode d'objet COM
- Procédure appelée en CallBack
- Divers
COMAppelleMéthode (Fonction) En anglais : COMCallMethod Exécute une méthode d'une interface d'un objet COM instancié grâce à la fonction COMCréeInstance.
PapierPeint est une chaîne UNICODE
PapierPeint = AnsiVersUnicode(Répète(" ", 260))
ActiveDesktop est un COMObjet
ActiveDesktop = COMCréeInstance("75048700-EF1F-11D0-9888-006097DEACF9", ...
"F490EB00-1240-11D1-9888-006097DEACF9")
SI ErreurDétectée = Faux ALORS
COMAppelleMéthode(ActiveDesktop, 4, &PapierPeint, 260, 1)
Info("L'image du bureau est : " + UnicodeVersAnsi(PapierPeint))
FIN
Syntaxe
Utilisation du numéro de la méthode Masquer les détails
<Résultat> = COMAppelleMéthode(<Objet COM> , <Numéro de la méthode> [, <Paramètre 1> [... [, <Paramètre N>]]])
<Résultat> : Entier sur 4 en 32 bits, entier sur 8 en 64 bits Résultat de l'exécution de la méthode. Ce résultat peut être un code d'erreur. Le type de ce résultat dépend de la méthode exécutée. Consultez la documentation de la méthode pour obtenir plus de détails. Si le résultat de la méthode est d'une taille supérieure à la taille de l'entier de la plateforme, il ne pourra pas être récupéré. <Objet COM> : Variable de type COMObjet Interface de l'objet COM obtenue avec la fonction COMCréeInstance. <Numéro de la méthode> : Entier Numéro d'ordre de la méthode dans la table des méthodes virtuelles.
ATTENTION :- le numéro d'ordre tient compte des classes de base
- le numéro d'ordre commence à 0.
<Paramètre 1> : Type correspondant au paramètre Premier paramètre à passer à la méthode. Ces paramètres doivent être du même type que les paramètres attendus par la méthode. Sont utilisables : - les types "simples" (voir Notes),
- les structures (voir Notes),
- un nom de procédure WLangage. Cette procédure sera rappelée par la méthode (voir Notes).
<Paramètre N> : Type correspondant au paramètre Nième paramètre à passer à la méthode. Ces paramètres doivent être du même type que les paramètres attendus par la méthode. Sont utilisables : - les types "simples" (voir Notes),
- les structures (voir Notes),
- un nom de procédure WLangage. Cette procédure sera rappelée par la méthode (voir Notes).
Utilisation d'une variable de type Description d'API Masquer les détails
<Résultat> = COMAppelleMéthode(<Objet COM> , <API à  exécuter> [, <Paramètre 1> [... [, <Paramètre N>]]])
<Résultat> : Entier sur 4 en 32 bits, entier sur 8 en 64 bits Résultat de l'exécution de la méthode. Ce résultat peut être un code d'erreur. Le type de ce résultat dépend de la méthode exécutée. Consultez la documentation de la méthode pour obtenir plus de détails. Si le résultat de la méthode est d'une taille supérieure à la taille de l'entier de la plateforme, il ne pourra pas être récupéré. <Objet COM> : Variable de type COMObjet Interface de l'objet COM obtenue avec la fonction COMCréeInstance. <API à exécuter> : Variable de type Description d'API Variable de type Description d'API contenant les caractéristiques de la méthode à exécuter. <Paramètre 1> : Type correspondant au paramètre Premier paramètre à passer à la méthode. Ces paramètres doivent être du même type que les paramètres attendus par la méthode. Sont utilisables : - les types "simples" (voir Notes),
- les structures (voir Notes),
- un nom de procédure WLangage. Cette procédure sera rappelée par la méthode (voir Notes).
<Paramètre N> : Type correspondant au paramètre Nième paramètre à passer à la méthode. Ces paramètres doivent être du même type que les paramètres attendus par la méthode. Sont utilisables : - les types "simples" (voir Notes),
- les structures (voir Notes),
- un nom de procédure WLangage. Cette procédure sera rappelée par méthode (voir Notes).
Remarques La fonction COMAppelleMéthode est protégée contre les "Erreurs de protection générale" dans la méthode appelée. Néanmoins, si une erreur de ce type se produit, une erreur WLangage est déclenchée. Lors de l'exécution de méthodes, si le résultat renvoyé correspond à une erreur, utilisez la fonction ErreurInfo pour obtenir plus d'informations sur l'erreur (avec la constante errCodeSystème ou errMessageSystème). Paramètres à passer à la méthode de l'objet COM Ces paramètres doivent être du même type que les paramètres attendus par la méthode. Les types utilisables sont les suivants : - Les types "simples" (entier, réel et booléen). L'utilisation d'un autre type WLangage provoque une erreur du WLangage.
Si la méthode à exécuter attend un pointeur ou un handle Windows, utilisez un entier système. Si la méthode à exécuter attend une adresse, utilisez l'opérateur &. - Les types "chaîne".
- Les types structure.
- Un nom de procédure WLangage. Cette procédure sera rappelée par la méthode de l'objet COM (voir paragraphe ci-dessous).
Les paramètres dépendent de la méthode exécutée. Consultez la documentation de cette méthode pour obtenir plus de détails.
Passer une chaîne à une méthode d'objet COM ou récupérer une chaîne en retour de l'appel d'une méthode d'objet COM - En paramètre d'entrée, utilisez le type chaîne. Par exemple :
sChaîne est une chaîne COMAppelleMéthode(<Objet>, <Numéro de la méthode>, sChaîne) - En paramètre de sortie, le C n'est pas capable de gérer des chaînes dynamiques de manière simple. Il est donc nécessaire :
- soit de fixer une taille maximale, avec le type "Chaîne sur". Par exemple :
sChaîne est une chaîne sur 100 COMAppelleMéthode(<Objet>, <Numéro de la méthode>, sChaîne) // dans Methode en C : // strncpy(PointeurEnC, "Test", 100) - soit de récupérer les adresses des chaînes en C (mais dans ce cas, la partie de code en C doit assurer la "survie" des chaînes renvoyées), puis de transférer la chaîne dans une variable de type chaîne grâce à la fonction ChaîneRécupère. Par exemple :
nAdresseChaîne est un entier système COMAppelleMéthode(<Objet>, <Numéro de la méthode>, &nAdresseChaîne) sChaîne est une chaîne sChaîne = ChaîneRécupère(nAdresseChaîne, crAdresseASCIIZ) // dans Méthode en C : *PointeurEnC = "Test"
- En valeur de retour, récupérer les adresses des chaînes en C (mais dans ce cas, la partie de code en C doit assurer la "survie" des chaînes renvoyées), puis transférer la chaîne dans une variable de type chaîne grâce à la fonction ChaîneRécupère. Par exemple :
nAdresseChaîne est un entier système nAdresseChaîne = COMAppelleMéthode(<Objet>, <Numéro de la méthode>) sChaîne est une chaîne sChaîne = ChaîneRécupère(nAdresseChaîne, crAdresseASCIIZ) // dans Méthode en C : Return PointeurEnC
Passer une structure contenant une chaîne à une méthode d'objet COM - En entrée, le code à utiliser est le suivant :
Struct est une structure sChaîne est une chaîne FIN UneStruct est une Struct COMAppelleMéthode(<Objet>, <Numéro de la méthode>, &UneStruct) - En sortie, le C n'est pas capable de gérer des chaînes dynamiques de manière simple. Il est donc nécessaire de :
- soit fixer une taille maximale et faire une copie dans la mémoire du WLangage. Par exemple :
sChaîne est une chaîne sur 100 Struct est une structure aChaine est un entier FIN UneStruct est une Struct UneStruct:aChaine = &sChaîne COMAppelleMéthode(<Objet>, <Numéro de la méthode>, &UneStruct) // dans Methode en C : // strncpy(StructEnC->PointeurEnC, "Test", 100) - soit récupérer les adresses des chaînes en C (mais dans ce cas, la partie de code en C doit assurer la "survie" des chaînes renvoyées). Par exemple :
sChaîne est une chaîne Struct est une structure aChaine est un entier FIN UneStruct est une Struct COMAppelleMéthode(<Objet>, <Numéro de la méthode>, &UneStruct) sChaîne = ChaîneRécupère(UneStruct:aChaine, crAdresseASCIIZ ) // dans Methode en C : StructEnC->PointeurEnC = "Test"
Procédure appelée en CallBack Certaines méthodes attendent en paramètre l'adresse d'une procédure "CallBack" : cette procédure sera rappelée par la méthode de l'objet COM. Pour utiliser une procédure callback en WLangage : 1. Créez la procédure callback dans votre projet Pour récupérer les paramètres, il faut décrire exactement les paramètres attendus par la fonction "CallBack". Dans le cas contraire, des "erreurs de protection générale" peuvent survenir. PROCEDURE <Nom de la procédure> (<Param1> est [un] <Type1>,<Param2> est [un] <Type2>) Remarques : - Les types doivent correspondre à ceux décrits dans la documentation de l'objet COM.
- Les paramètres sont obligatoirement passés par valeur. Pour récupérer un paramètre par référence :
- Utilisez un entier.
- Avec la fonction Transfert, récupérez ou affectez la véritable valeur.
2. Modifiez l'appel de la méthode en conséquence. Utilisez la syntaxe suivante : COMAppelleMéthode(<Objet>, <Numéro de la méthode>, &<Nom de la procédure CallBack>)
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|