Показать сообщение отдельно

  #1114  
Старый 18.02.2008, 09:31
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме:
34671

Репутация: 1
По умолчанию

нашёл решение. может кому пригодиться. По нажатию кнопаря выводит в листбокс список всех пользователей в системе:

Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
{$EXTERNALSYM NetUserEnum}
function NetUserEnum(servername: LPWSTR;

   level,
   filter: DWORD;
   bufptr: Pointer;
   prefmaxlen: DWORD;
   entriesread,
   totalentries,
   resume_handle: LPDWORD): DWORD; stdcall;
external 'NetApi32.dll' Name 'NetUserEnum';

function NetApiBufferFree(Buffer: Pointer {LPVOID}): DWORD; stdcall;

external 'NetApi32.dll' Name 'NetApiBufferFree';

procedure GetLocalUserList(ulist: TStringList);

implementation

{$R *.dfm}

procedure GetLocalUserList(ulist: TStringList);
const

   NERR_SUCCESS = 0;
   FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
   FILTER_NORMAL_ACCOUNT = $0002;
   FILTER_PROXY_ACCOUNT = $0004;
   FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
   FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
   FILTER_SERVER_TRUST_ACCOUNT = $0020;

type

   TUSER_INFO_10 = record
     usri10_name,
       usri10_comment,
       usri10_usr_comment,
       usri10_full_name: PWideChar;
end;
   PUSER_INFO_10 = ^TUSER_INFO_10;

var

   dwERead, dwETotal, dwRes, res: DWORD;
   inf: PUSER_INFO_10;
   info: Pointer;
   p: PChar;
   i: Integer;
begin

   if ulist = nil then
     Exit;
   ulist.Clear;

   info := nil;
   dwRes := 0;
   res := NetUserEnum(nil,
     10,
     FILTER_NORMAL_ACCOUNT,
     @info,
     65536,
     @dwERead,
     @dwETotal,
     @dwRes);
  if (res <> NERR_SUCCESS) or (info = nil) then
     Exit;
   p := PChar(info);
  for i := 0 to dwERead - 1 do
   begin
     inf := PUSER_INFO_10(p + i * SizeOf(TUSER_INFO_10));
     ulist.Add(WideCharToString(PWideChar((inf^).usri10_name)));
   end;

   NetApiBufferFree(info);
end;

procedure TForm1.Button1Click(Sender: TObject);
var list:TStringList;
begin
list:=Tstringlist.Create;
GetLocalUserList(list);
listbox1.Items:=list;

end;

end.
 
Ответить с цитированием