Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
1-1082547148
Axil
2004-04-21 15:32
2004.04.11
Общий скрол окна и его фрейма


14-1082048178
VMcL
2004-04-15 20:56
2004.04.11
Может старое, но прикольно


4-1079308855
kothor
2004-03-15 03:00
2004.04.11
Есть вопрос по меню.


8-1070754238
Byggerr
2003-12-07 02:43
2004.04.11
Как вращать Ellipse по кругу или другие фигуры???


14-1082558213
KSergey
2004-04-21 18:36
2004.04.11
Вышла знаменитая "Inside for Microsoft Windows 2000"




   Наверх