ネイティブコードを呼び出すためのマクロスクリプトのメソッドを提供します。通常は、Flash 以外のテクノロジーで開発されたカスタムグラフィカルユーザーインターフェイスを表示する目的で使用します。
スクリプトが callExternalFunction を呼び出すと、現在実行中のスクリプトファイルを含むフォルダーから、指定された DLL ファイル名が読み込まれます。指定されたファイル名には、自動的に DLL 拡張子が追加されます。DLL ファイル名には、パス要素を含めることはできません。また、myMacroExtension などの拡張子を含まないファイル名にする必要があります。
sFunctionName パラメーターによって識別された関数を検索するには、GetProcAddress を使用します。
サンプルの呼び出し
designer.callExternalFunction("DesignerExtension", "ShowMyDialog", "user data here");
この呼び出しでは、マクロがインストールされているディレクトリと同じ場所から DesignerExtension.dll という名前の DLL を読み込み、ShowMyDialog という名前の関数を検索して、「user data here」文字列をワイド文字列(const wchar_t *)として渡します。
この関数は、designer.callExternalFunction 呼び出しから返された文字列を返すことができます。文字列は、ワイド文字列を含む HGLOBAL として返されます。
DLL の関数の次の例では、ダイアログ内に渡された文字列を示します。ユーザーがクリックするオプションに基づいて「yes」または「no」が返されます。この例のように、C 関数は関数プロトタイプを持っている必要があります。
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;
}
構文
designer.callExternalFunction ( STRING param1, STRING param2, STRING param3)
パラメーター
param1
|
DLL 名を表す文字列です。ファイル名拡張子を含まない DLL のルートファイル名を指定します。
|
param2
|
関数名を表す文字列です。
|
param3
|
関数に渡される文字列パラメーターです。
|