Главная страница
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.043 c
3-1081767988
asafr
2004-04-12 15:06
2004.04.11
ADO, Access 2000: "Нераспознаваемый формат базы данных"...


1-1080205465
XmPL
2004-03-25 12:04
2004.04.11
Как обращаться к контролам родительской формы ?


3-1079361821
ceval
2004-03-15 17:43
2004.04.11
ComboBox се отбражалось одно а поиск шел по


3-1081722170
Lamer3
2004-04-12 02:22
2004.04.11
Запрос..... простой


8-1076424193
Maverick
2004-02-10 17:43
2004.04.11
ImageEn