Руководство разработчика

Функция ВЫЗОВ

Функция ВЫЗОВ позволяет вызывать функции из внешних динамически загружаемых библиотек (DLL).

ФУНКЦИЯ ТИП_ЛОГИКА: ВЫЗОВ(ТИП_СТРОКА: имя_библиотеки, имя_функции,
	строка)

Параметры

имя_библиотеки
Имя DLL.
имя_функции
Имя функции в указанной библиотеке.
строка
строка, через которую осуществляется обмен с внешней функцией.

Возвращаемое значение

ДА – если найдены указанные библиотека и функция и НЕТ – в противном случае.

Вызываемая функция должна иметь следующий интерфейс:

char* WINAPI <имя функции> (HWND hWindow, char* InputStr)

или в Паскале:

function <имя функции>(hWindow: HWND; InputStr: PChar): PChar; stdcall;

Значение переменной строка передается в функцию в качестве параметра InputStr, а после выполнения функции этой переменной присваивается возвращенное функцией значение.

Дополнительно в функцию передается дескриптор окна Инфо-Бухгалтера (главного или верхнего диалога).

Пример использования

// В Инфо-Бухгалтере:
стр = "Строка на вход"
ЕСЛИ  ВЫЗОВ ("calltest.dll", "TestMsgBox", стр)  ТО
	СООБЩЕНИЕ (стр)
ИНАЧЕ
	СООБЩЕНИЕ ("Ошибка: библиотека или функция не найдена!")
КОНЕЦ_ЕСЛИ

// В DLL
-------- calltest.h

extern "C" 
{
	char* WINAPI TestMsgBox (HWND handle, char* message);
}

-------- calltest.cpp

char* WINAPI TestMsgBox(HWND handle, char* message)
{
	::MessageBox (handle,message,"Привет от DLL",MB_OK | MB_ICONINFORMATION);
	return "Строка на выход";
}

См. также: