Вниз
Скачать: 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.03 c
3-1079530237
Layner
2004-03-17 16:30
2004.04.11
Как запретить удалить запись с опред ID (Значением поля)?


11-1066039342
RA
2003-10-13 14:02
2004.04.11
Кто нибудь пытался перевести под KOL комп-ты BDE


9-1070054990
mrAld
2003-11-29 00:29
2004.04.11
FPS и потоки


14-1078224465
_none_
2004-03-02 13:47
2004.04.11
продается теннисный стол


1-1080308130
Fast
2004-03-26 16:35
2004.04.11
Помогите конветрнуть сишный хидер




   Наверх