Мне нужно вызвать функцию hllapi из pcshll32.dll, используя delphi. Он работает с персональными сообщениями ibm. Как я могу изменить приведенный ниже код на delphi? Благодаря !!!Вызов dll - pcshll32.dll с помощью delphi
Точка входа EHLLAPI (hllapi) всегда вызывается со следующими четырьмя параметрами:
- EHLLAPI Функция Количество (вход)
- Буфер данных (вход/выход)
- Буфер Длина (вход/выход)
- Представление Космическое положение (вход); Код возврата (выход)
Прототип IBM Standard EHLLAPI является: [длинная hllapi (LPWORD, LPSTR, LPWORD, LPWORD); Прототип для IBM Enhanced EHLLAPI: [long hllapi (LPINT, LPSTR, LPINT, LPINT);
Каждый параметр передается по ссылке не по значению. Таким образом, каждый параметр вызова функции должен быть указателем на значение, а не самим значением. Например, следующий является правильным примером вызова функции состояния EHLLAPI Query Session:
#include "hapi_c.h"
struct HLDQuerySessionStatus QueryData;
int Func, Len, Rc;
long Rc;
memset(QueryData, 0, sizeof(QueryData)); // Init buffer
QueryData.qsst_shortname = ©A©; // Session to query
Func = HA_QUERY_SESSION_STATUS; // Function number
Len = sizeof(QueryData); // Len of buffer
Rc = 0; // Unused on input
hllapi(&Func, (char *)&QueryData, &Len, &Rc); // Call EHLLAPI
if (Rc != 0) { // Check return code
// ...Error handling
}
Всех параметров в вызове hllapi являются указатели и коды возврата функции EHLLAPI возвращаются в стоимости 4 параметр, а не как значение функции.