Fornisce un metodo affinché uno script delle macro richiami un codice nativo. Di solito, utilizzato per la visualizzazione di un'interfaccia utente grafica personalizzata sviluppata in una tecnologia diversa da Flash.
Quando lo script chiama callExternalFunction, il nome di file DLL specificato viene caricato dalla cartella contenente il file di script attualmente in esecuzione. L'estensione DLL viene aggiunta automaticamente al nome di file specificato. Il nome di file DLL non può includere elementi del percorso e deve includere un nome di file senza estensione, ad esempio myMacroExtension.
GetProcAddress viene utilizzato per trovare la funzione identificata dal parametro sFunctionName.
Chiamata di esempio:
designer.callExternalFunction("DesignerExtension", "ShowMyDialog", "user data here");
Questa chiamata carica una DLL denominata DesignerExtension.dll dalla stessa directory in cui è stata installata la macro, ricerca una funzione denominata ShowMyDialog e convalida la stringa "user data here" come stringa di caratteri wide (const wchar_t *).
La funzione può restituire una stringa, che viene restituita dalla chiamata a designer.callExternalFunction. La stringa viene restituita come HGLOBAL contenente una stringa di caratteri wide.
Il seguente esempio di una funzione in una DLL mostra la stringa trasferita in una finestra di dialogo e restituisce "yes" o "no" in base a quale opzione l'utente seleziona. Alla funzione C deve essere associato il prototipo della funzione come questo esempio.
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;
}
Sintassi
designer.callExternalFunction ( STRING param1, STRING param2, STRING param3)
Parametri
param1
|
Una stringa che rappresenta il nome della DLL. Specificare il nome di file radice della DLL senza l'estensione del nome di file.
|
param2
|
Una stringa che rappresenta il nome della funzione.
|
param3
|
Il parametro della stringa viene trasferito alla funzione.
|
Valore restituito
Stringa.