Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как достать функцию из Dll?

12K
21 июня 2005 года
pijon
1 / / 21.06.2005
Есть фискальный реестратор "Datecs FP3530T".
С ним в комплекте идет ПО, а имено библиотека FPL.DLL, а токже краткое ее описание.
Как достать из нее функции?
С++ знаю поверхностно, так как на нем не пишу.
Использую Visual Studio Net2003.
Я делаю так:
typedef int (CALLBACK *MYFUNC)(void);
HINSTANCE hDLL; // Handle to DLL
MYFUNC MyFuncAddr; // Function pointer
int ReturnVal;
hDLL = LoadLibrary("FPL.dll");
if (hDLL != NULL)
{
MyFuncAddr = (MYFUNC)GetProcAddress(hDLL,"CloseFPport");
if (!MyFuncAddr)
{
FreeLibrary(hDLL);
MessageBox(0,"Не знайдено функцію в бібліотеці FPL.DLL !","DATECS FP3530T",MB_OK);
return S_FALSE;
}
else
{
ReturnVal = MyFuncAddr();
if (ReturnVal < 0)
{
MessageBox(0,"Помилка відключення порта!","DATECS FP3530T",MB_OK);
FreeLibrary(hDLL);
return S_FALSE;
}
else
{
FreeLibrary(hDLL);
CloseHandle(this->ComPortHandle);
this->ComPortHandle = NULL;
return S_OK;
}
}
}
else
{
MessageBox(0,"Не знайдено бібліотеку FPL.DLL !","DATECS FP3530T",MB_OK);
return S_FALSE;
}

Роботает нормально.
Но есть такие функции которые я не знаю как обявить.из инстракции к ДЛЛ:
...
Рассмотрим формат деклараций функций второй группы:

int CALLBACK dllFunction(HWND hwnd,void (CALLBACK *Fn),LPARAM UI,…)

Параметры функции:

HWND hwnd – в вызове функции вместо этого параметра ставится NULL (данный параметр используется только для совместимости с предыдущими версиями библиотеки)

void (CALLBACK *Fn) – в качестве этого параметра указывается функция, определение которой разработчик помещает в свое приложение. Именно эту функцию вызывает библиотека после того, как фискальный регистратор завершает выполнение команды. Формат декларации данной функции будет рассмотрен ниже.

LPARAM UI - в вызове функции вместо этого параметра ставится 0L (данный параметр используется только для совместимости с предыдущими версиями библиотеки).

Остальные входные параметры зависят от действий, которые выполняет конкретная функции и рассматриваются в главе 7 при описании каждой функции.
Если после обработки входных параметров, библиотека убедилась в их корректности, то результатом выполнения dllFunction будет 0, в противном случае -1.

Вид CALLBACK функции, вызываемой из библиотеки после завершения выполнения команды фискальным регистратором:

Формат в Borland C++ Builder:
void CALLBACK _export PrinterResults(struct RetData far &rtd)
{


}

Формат в Delphi:
procedure PrinterResults(const rtd:RetData )stdcall;
begin


end;

Внутри библиотеки данная функция определяется следующим обрпазом –
typedef void (PASCAL FAR *RetCallback) (struct RetData &);

Результат работы фискального регистратора передается в структуре rtd.
...
Так вот: как мне достать например функцию такую
int CALLBACK ClearDisplay(HWND, void (CALLBACK far *), LPARAM);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог