Fournit une méthode permettant au script de macro d’appeler le code natif. Permet en général d’afficher une interface utilisateur graphique personnalisée développée avec une technologie autre que Flash.
Lorsque le script appelle callExternalFunction, le nom de fichier DLL spécifié est chargé à partir du dossier contenant le fichier de script en cours d’exécution. L’extension DLL est automatiquement ajoutée au nom de fichier spécifié. Le nom de fichier de la DLL ne peut pas inclure des éléments de chemin d’accès et doit inclure un nom du fichier sans extension, par exemple monExtensiondeMacro.
GetProcAddress est utilisé pour localiser la fonction identifiée par le paramètre sFunctionName.
Exemple d’appel :
designer.callExternalFunction("DesignerExtension", "ShowMyDialog", "user data here");
Cet appel charge une DLL appelée DesignerExtension.dll à partir du même répertoire que celui dans lequel la macro est installée, recherche une fonction appelée ShowMyDialog et transmet la chaîne « données utilisateur ici » sous forme de chaîne de caractères larges (const wchar_t * ).
La fonction peut renvoyer une chaîne, qui est renvoyée à partir de l’appel designer.callExternalFunction. La chaîne est renvoyée sous forme de HGLOBAL contenant une chaîne de caractères larges.
L’exemple suivant de fonction dans une DLL affiche la chaîne transmise dans une boîte de dialogue et renvoie « Oui » ou « Non » en fonction de l’option choisie par l’utilisateur. La fonction C doit présenter le prototype de fonction comme dans l’exemple suivant.
extern "C" __declspec(dllexport) HGLOBAL _cdecl ShowMyDialog(HWND hwndParent, const wchar_t *pszArgument)
{
int nResult = ::MessageBox(hwndParent, pszArgument, L"DLL Function Sample", MB_YESNO);
// Allocate some memory for the result string
HGLOBAL hMem = GlobalAlloc(0, 64);
if (!hMem)
return 0;
wchar_t *pMem = (wchar_t *)GlobalLock(hMem);
wcscpy_s(pMem, 30, nResult == IDYES ? L"yes" : L"no");
::GlobalUnlock(hMem);
return hMem;
}
Syntaxe
designer.callExternalFunction ( STRING param1, STRING param2, STRING param3)
Paramètres
param1
|
Chaîne représentant le nom du fichier DLL. Spécifiez le nom du fichier racine de la DLL sans l’extension.
|
param2
|
Chaîne représentant le nom de la fonction.
|
param3
|
Paramètre de chaîne transmis à la fonction.
|