Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизСтруктура 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c