Функция ВЫЗОВ
Функция ВЫЗОВ позволяет вызывать функции из внешних динамически загружаемых библиотек (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 "Строка на выход";
}