Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Структура GROUP_USERS_INFO_0.   Найти похожие ветки 

 
LordBTR   (2004-02-02 16:47) [0]

При попытке компиляции кода вылетает ошибка: Неизвестный идентификатор GROUP_USERS_INFO_0. Где он описан? Что подключить к проекту?

Вот код проги. Пытаюсь вывести список групп домена, в которые включен пользователь.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;

type
 TForm1 = class(TForm)
   BitBtn1: TBitBtn;
   ListBox1: TListBox;
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var s: string;
begin
 s:= GetUserGroups(PWideChar("Server1"),PWideChar("NEA"));
end;

function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;
type
TUserGroupArray = array of GROUP_USERS_INFO_0;
// В этом месте вылетает ошибка Неизвестный идентификатор
var
pBuffer : Pointer;
dwRead,dwTotal,i:Cardinal;
begin
 @NetUserGetGroup := nil;
 LibHandle:=LoadLibrary("NetAPI32.DLL");
 if LibHandle>=32 then
   @NetUserGetGroup:=GetProcAddress(LibHandle,"NetUserGetGroups");
 if @NetUserGetGroup<>nil then
 begin
  Result:=NetUserGetGroups(lpwServer,lpwUser,0,pBuffer,Cardinal(-1),dwRead,dwTotal);
  if Result<>0 then Exit;
  for i:=0 to dwRead-1 do
    ListBox1.Items.Add(TUserGroupArray(pBuffer)[i].grui0_name);
    NetApiBufferFree(pBuffer);
 end
 else
   ShowMessage(Не найдена DLL!!!");
 FreeLibrary(LibHandle);
end;

end.


 
Andersen ©   (2004-02-02 16:55) [1]

lmaccess.h. Гы!


 
LordBTR   (2004-02-02 17:01) [2]


> Andersen ©   (02.02.04 16:55) [1]

Гы. Гы. А где ее взять-то родимую? Гы. Гы.


 
Яичница ©   (2004-02-02 20:45) [3]

LMD -(
Думаешь, только в этом месте ошибка ? Их тут штук пять, как минимум.... корявый вариант (но всё-же работающий) - смотри ниже. В порядок его приведи сам. В качестве домашнего задания.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Button1: TButton;
   ListBox1: TListBox;
   Edit1: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
GROUP_USERS_INFO_0 = record
grui0_name:PWideChar;
end;
var
   LibHandle: LongWord;
   NetUserGetGroup:function(
   lpwServer: PWideChar;
   lpwUser : PWideChar;
   level:DWORD;
   bufptr:PBYTE;
   prefmaxlen:DWORD ;
   var entriesread:DWORD ;
   var totalentries :DWORD
   ):cardinal stdcall;

 Form1: TForm1;
   function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;

implementation

{$R *.dfm}
function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;
type
TUserGroupArray = array of GROUP_USERS_INFO_0;
var
pBuffer : Pointer;
dwRead,dwTotal,i:Cardinal;
UserGroupArray : array [0..100] of GROUP_USERS_INFO_0;
begin
pBuffer:=@UserGroupArray;
dwRead:=0;
ZeroMemory(pBuffer,SizeOf(UserGroupArray));// здесь навести порядок!!!
@NetUserGetGroup := nil;
LibHandle:=LoadLibrary("NetAPI32.DLL");
if LibHandle>=32 then
  @NetUserGetGroup:=GetProcAddress(LibHandle,"NetUserGetGroups");
if @NetUserGetGroup<>nil then
begin
 Result:=NetUserGetGroup(lpwServer,lpwUser,0,pBuffer,255,dwRead,dwTotal);
 if Result<>0 then Exit;
 for i:=0 to dwRead-1 do
   Form1.ListBox1.Items.Add(WideCharToString(TUserGroupArray(pBuffer^)[i].grui0_name));
//    NetApiBufferFree(pBuffer); - здесь навести порядок
end
else
  ShowMessage("Не найдена DLL!!!");
FreeLibrary(LibHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
var s,u: widestring;
begin
s:=WideString("Server");
u:=WideString("User");
 GetUserGroups(@s[1],@u[1]);
end;

end.

ps
В частности, порядок наводить надо здесь:
bufptr

Pointer to the buffer in which the data set with the level parameter is stored. The buffer passed in must have been previously allocated with NetApiBufferAlloc. The returned buffer should be deallocated using the NetApiBufferFree function.


 
csr ©   (2004-02-03 11:37) [4]

Так лучше не делай :). Нормальные люди просто создают экземпляр TidAttachment :))


 
LordBTR   (2004-02-03 13:14) [5]


> csr ©   (03.02.04 11:37) [4]
> Так лучше не делай :). Нормальные люди просто создают
> экземпляр TidAttachment :))

У-ух... Ну и умные же Вы все...
А как насчет примерчика с использованием TidAttachment?



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
1-1080043482
Kirill Bezrukov
2004-03-23 15:04
2004.04.11
BPL (Пакеты) !Build with run time packages


4-1075757030
Gogi
2004-02-03 00:23
2004.04.11
Список окон и всплывающие подсказки (hint)


4-1075637281
8ung
2004-02-01 15:08
2004.04.11
Как сменить иконку у exe файла?


7-1079698523
headerr
2004-03-19 15:15
2004.04.11
Отключение прокрутки колесом мыши


7-1075224980
Дмон
2004-01-27 20:36
2004.04.11
Печать в 9х и в W2K