Главная страница
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.045 c
4-1075818303
Pul
2004-02-03 17:25
2004.04.11
стандартное диалоговое окно


3-1078990424
Michail Dalakov
2004-03-11 10:33
2004.04.11
Сортировка в DB Oracle


1-1082871507
KirillSKTS
2004-04-25 09:38
2004.04.11
вопрос про self


4-1075607631
Clift
2004-02-01 06:53
2004.04.11
Индикатор языка


11-1068393847
Vladimir Kladov
2003-11-09 19:04
2004.04.11
Есть спецы по яве? Надо скрипт новостей до ума довести.