Nach ein paar Unterredungen in ICQ ist folgendes herausgekommen:
Delphi-Quellcode:
procedure ListAllUsers(hTreeView: DWORD; hMasterParent: Cardinal; var iEntriesRead: Cardinal);
{type
PUSER_INFO_0 = ^_USER_INFO_0;
PUSER_INFO_11 = ^_USER_INFO_11;}
var
aTempIStruct: TTVInsertStruct;
aUserBuffer, aWorkBuffer: Pointer; //PUSER_INFO_0;
dwEntriesRead: Cardinal;
i: integer;
sTemp: string;
begin
aTempIStruct.item.mask := TVIF_TEXT;
if NetUserEnum(nil, 0, FILTER_NORMAL_ACCOUNT, aUserBuffer, MAX_PREFERRED_LENGTH,
dwEntriesRead, dwEntriesRead, nil) = NERR_SUCCESS then begin
aWorkBuffer := aUserBuffer;
for i:=0 to dwEntriesRead-1 do begin
aTempIStruct.hParent := Pointer(hMasterParent);
sTemp := PUserInfo0(aWorkBuffer)^.usri0_name;
aTempIStruct.item.pszText := @sTemp[1];
SendMessage(hTreeView, TVM_INSERTITEM, 0, integer(@aTempIStruct));
inc(Integer(aWorkBuffer), sizeOf(aWorkBuffer));
end;
end;
NetAPIBufferFree(aUserBuffer);
end;
Allerdings ist hier die ursprüngliche Deklaration von NetUserEnum bei zubehalten. Ich hatte sie geändert, da Christian das so gepostet hat (oder ich habe ihn missverstanden).
Nochmal danke @ Luckie..
Chris