Вот пытаюсь прикрутить к программе диалог выбора пользователя из Active Directory.
Живет этот диалог в ..Windows\system32\objsel.dll
Есть там одна структура:
The DSOP_INIT_INFO structure contains data required to initialize an object picker dialog box. This structure is used with the IDsObjectPicker::Initialize method.
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, ayap, Вы писали:
A>>Вопрос как правильно создать массив структур и в поле aDsScopeInfos его положить?
E>Может приведете свой код полностью, с инициализацией полей структуры DSOP_INIT_INFO?
Я так понимаю вы должны передать в функцию массив структур DSOP_SCOPE_INIT_INFO, полученный ранее каким-то образом (где это у вас в коде?). Представим что они у вас все таки есть и что это просто локальный массив, инициализируемый перед вызовом IDsObjectPicker::Initialize. Тогда передаваться он будет следующим образом:
var
A> InitInfo: PDSOP_INIT_INFO;
A> aScopeInit: array[0..1] of DSOP_SCOPE_INIT_INFO;
A>...
A>begin
A> try
A>...
// Инициализируем массив aScopeInit
// ...
A> InitInfo := GetMemory(sizeof(DSOP_INIT_INFO));
A> InitInfo.cbSize := sizeof(DSOP_INIT_INFO);
A> InitInfo.pwzTargetComputer := LPWSTR(CompName);
A> InitInfo.cDsScopeInfos := Length(aScopeInit);
A> InitInfo.aDsScopeInfos := @aScopeInit[0];
A> InitInfo.flOptions := DSOP_FLAG_MULTISELECT or DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK;
A> InitInfo.cAttributesToFetch := 0;
A> InitInfo.apwzAttributeNames := nil;
A> (obj as IDsObjectPicker).Initialize(InitInfo);
A> finally
A> FreeMemory(InitInfo);
A> end;
A>end;
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[3]: Как передать в API функцию ссылку на массив структур
E>Я так понимаю вы должны передать в функцию массив структур DSOP_SCOPE_INIT_INFO, полученный ранее каким-то образом (где это у вас в коде?). Представим что они у вас все таки есть и что это просто локальный массив, инициализируемый перед вызовом IDsObjectPicker::Initialize. Тогда передаваться он будет следующим образом:
при кол-ве структур 1 — разницы никакой. а вот packed record надо бы на автопилоте приучиться писать.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[5]: Как передать в API функцию ссылку на массив структур
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>>при кол-ве структур 1 — разницы никакой. E>Не совсем понял, о чем это.
сорри, не вчитался... подумал что как всегда массив указателей на структуры...
OAB>>а вот packed record надо бы на автопилоте приучиться писать. E>Там и record в моем посте не было.
это я в продолжение, чтоб 2 поста не писать
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[7]: Как передать в API функцию ссылку на массив структур
Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>Здравствуйте, ekamaloff, Вы писали:
E>>Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>>>при кол-ве структур 1 — разницы никакой. E>>Не совсем понял, о чем это. OAB>сорри, не вчитался... подумал что как всегда массив указателей на структуры...
OAB>>>а вот packed record надо бы на автопилоте приучиться писать. E>>Там и record в моем посте не было. OAB>это я в продолжение, чтоб 2 поста не писать
За всё спасибо, конечно, но я примерно так всё и делал — не работает однако