Вызов dll - pcshll32.dll с использованием delphi - PullRequest
1 голос
/ 23 января 2010

Мне нужно вызвать функцию hllapi pcshll32.dll, используя delphi. Это работает с личными сообщениями IBM. Как я могу изменить код ниже Delphi? Спасибо !!!

Точка входа EHLLAPI (hllapi) всегда вызывается со следующими четырьмя параметрами:

  1. Номер функции EHLLAPI (вход)
  2. Буфер данных (ввод / вывод)
  3. Длина буфера (вход / выход)
  4. Положение в пространстве представления (вход); Код возврата (выход)

Прототип для IBM Standard EHLLAPI: [длинный хлапи (LPWORD, LPSTR, LPWORD, LPWORD); Прототип для IBM Enhanced EHLLAPI: [длинный хлапи (LPINT, LPSTR, LPINT, LPINT);

Каждый параметр передается по ссылке, а не по значению. Таким образом, каждый параметр вызова функции должен быть указателем на значение, а не на само значение. Например, ниже приведен правильный пример вызова функции состояния сеанса запроса EHLLAPI:

#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-го параметра, а не в качестве значения функции.

1 Ответ

0 голосов
/ 23 января 2010

Вам нужно сначала преобразовать hapi_c.h в Delphi (если вы никогда не делали этого раньше, возможно, вы захотите начать читать здесь: Уголок Руди в Delphi: ловушки для преобразования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...