Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, ayap, Вы писали:
A>>Вопрос как правильно создать массив структур и в поле aDsScopeInfos его положить?
E>Может приведете свой код полностью, с инициализацией полей структуры DSOP_INIT_INFO?
Пжалста:
...
type
DSOP_SCOPE_INIT_INFO = record
cbSize: Longint;
flType: Longint;
flScope: Longint;
FilterFlags: DSOP_FILTER_FLAGS;
pwzDcName: LPWSTR;
pwzADsPath: LPWSTR;
hr: HResult;
end;
PDSOP_SCOPE_INIT_INFO = ?
DSOP_INIT_INFO = record
cbSize: Longint;
pwzTargetComputer: LPWSTR;
cDsScopeInfos: Longint;
aDsScopeInfos: PDSOP_SCOPE_INIT_INFO;
flOptions: LongInt;
cAttributesToFetch: Longint;
apwzAttributeNames: PLPWSTR;
end;
PDSOP_INIT_INFO = ^DSOP_INIT_INFO;
IDsObjectPicker = interface(IUnknown)
['{0C87E64E-3B7A-11D2-B9E0-00C04FD8DBF7}']
function Initialize(pInitInfo: PDSOP_INIT_INFO ): HResult; stdcall;
function InvokeDialog(Parent: HWND; doSelections: IUnknown): HResult; stdcall;
end;
...
var
InitInfo: PDSOP_INIT_INFO;
aScopeInit: PDSOP_SCOPE_INIT_INFO;
...
begin
try
...
InitInfo := GetMemory(sizeof(DSOP_INIT_INFO));
InitInfo.cbSize := sizeof(DSOP_INIT_INFO);
InitInfo.pwzTargetComputer := LPWSTR(CompName);
InitInfo.cDsScopeInfos := sizeof(aScopeInit);
InitInfo.aDsScopeInfos := aScopeInit;
InitInfo.flOptions := DSOP_FLAG_MULTISELECT or DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK;
InitInfo.cAttributesToFetch := 0;
InitInfo.apwzAttributeNames := nil;
(obj as IDsObjectPicker).Initialize(InitInfo);
finally
FreeMemory(InitInfo);
end;
end;
Непонятно все выделенное жирным