Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Как определить группу в которой находится юзер?   Найти похожие ветки 

 
Matrex ©   (2004-12-25 23:31) [0]

Как определить группу в локальной сети в которой находится юзер?


 
Matrex ©   (2004-12-25 23:34) [1]

Сори... Добавлю: Подойдел любой вариант - по IP, по имени в сети...


 
Яичница ©   (2004-12-26 04:10) [2]

Код написан не кошерно, надо приводить в порядок...Но думаю. что в качестве толчка в нужном направлении сойдет. -)

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   end;
type
   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;
   dwErr : integer;
   UserGroupArray : array [0..100] of GROUP_USERS_INFO_0;
begin
   pBuffer:=@UserGroupArray;
   dwRead:=0;
   ZeroMemory(pBuffer,SizeOf(UserGroupArray));
// здесь навести порядок!!!
//   надо использовать NetApiBufferAlloc
//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.
   @NetUserGetGroup := nil;
   LibHandle:=LoadLibrary("NETAPI32.DLL");

 if LibHandle = 0 then
    begin
// Обработать ошибку и выйти
     end
  else
  begin
       @NetUserGetGroup:=GetProcAddress(LibHandle,"NetUserGetGroups");
       if @NetUserGetGroup <> nil then
       begin
           Result:=NetUserGetGroup(lpwServer,lpwUser,0,pBuffer,255,dwRead,dwTotal);
           if Result = 0 then
           for i:=0 to dwRead-1 do
//ну, это уж совсем не кошерно -)
               Form1.ListBox1.Items.Add(WideCharToString(TUserGroupArray(pBuffer^)[i].grui0_name));
       end;
   end;
//    NetApiBufferFree(pBuffer); - здесь навести порядок
   FreeLibrary(LibHandle);
end;
//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
var s,u: widestring;
   Err: cardinal;
begin
   s:=WideString("Server");
   u:=WideString("User");
   Err:=GetUserGroups(@s[1],@u[1]);
   .....
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
8-1100845847
_alex_
2004-11-19 09:30
2005.03.06
Как определить область многоугольника


14-1108455916
Hawk2
2005-02-15 11:25
2005.03.06
ТВ-Тюнеры


1-1109081445
Топпер
2005-02-22 17:10
2005.03.06
не главные формы на панели задач


1-1109094700
mr-jack
2005-02-22 20:51
2005.03.06
перестановка StringGrid


1-1108894972
zero-g
2005-02-20 13:22
2005.03.06
Легенда в TChart