Fornece um método para um script de macros para chamar o código nativo. Geralmente, usada para chamar uma interface gráfica do usuário personalizada desenvolvida em uma tecnologia que não seja Flash.
Quando o script chamada callExternalFunction, o nome de arquivo DLL especificado é carregado da pasta contendo o arquivo de script atualmente em execução. A extensão DLL é adicionada automaticamente ao nome de arquivo especificado. O nome de arquivo DLL não pode incluir elementos de caminho e deve incluir um nome de arquivo sem uma extensão, como myMacroExtension.
GetProcAddress é usada para localizar a função identificada pelo parâmetro sFunctionName.
Chamada de amostra:
designer.callExternalFunction("DesignerExtension", "ShowMyDialog", "user data here");
Essa chamada carrega uma DLL denominada DesignerExtension.dll do mesmo diretório no qual a macro está instalada, consulta uma função denominada ShowMyDialog e passa a string "user data here" (dados de usuário aqui) como uma string ampla de caracteres (const wchar_t *).
A função pode retornar uma string, que é retornada da chamada designer.callExternalFunction. A string é retornada como uma HGLOBAL contendo uma string ampla de caracteres.
O exemplo a seguir de uma função em uma DLL mostra a string aprovada em uma caixa de diálogo, bem como retorna "yes" (sim) ou "no" (não), com base em qual opção o usuário clica. A função C deve ter a função protótipo como neste exemplo.
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;
}
Sintaxe
designer.callExternalFunction ( STRING param1, STRING param2, STRING param3)
Parâmetros
param1
|
Uma string representando o nome da DLL. Especifique o nome do arquivo de raiz da DLL, sem a extensão de nome de arquivo.
|
param2
|
Uma string representando o nome da função.
|
param3
|
O parâmetro de string que é passado para a função.
|