callExternalFunction

ネイティブコードを呼び出すためのマクロスクリプトのメソッドを提供します。通常は、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

関数に渡される文字列パラメーターです。

戻り値

文字列です。