Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  164

•  TDictionary Custom Sort  3 338

•  Fast Watermark Sources  3 092

•  3D Designer  4 849

•  Sik Screen Capture  3 345

•  Patch Maker  3 554

•  Айболит (remote control)  3 660

•  ListBox Drag & Drop  3 015

•  Доска для игры Реверси  81 707

•  Графические эффекты  3 946

•  Рисование по маске  3 249

•  Перетаскивание изображений  2 630

•  Canvas Drawing  2 753

•  Рисование Луны  2 582

•  Поворот изображения  2 190

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 236

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 231

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 057

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 475

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 366

•  HEX View  1 497

•  Физический маятник  1 358

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получение сетевого имени пользователя



Защита от "дурака" спасает только от неизобретательного дурака.

Вы можете попробовать этот код. Я без проблем использовал его под Netware LAN в течение долгого времени. Работа программы зависит от наличия NWCALLS.DLL на машине пользователя, но если он использовал сеть хоть раз, данная библиотека должна присутствовать на его машине.


unit GetLogin;

{
Данный модуль инкапсулирует несколько внешних
функций библиотеки NWCALLS.DLL
Создан на основе кода Григория Трубецкого
Модуль содержит функции, возвращающие Netware User ID
и полное имя пользователя.
}

interface

uses
  SysUtils, Messages, Dialogs;
function GetUserLogin: string;
function GetUserFullName(SomeUser: string): string;

implementation

type
  NWTimeStamp = record
    Year: byte;
    Month: byte;
    Day: byte;
    Hour: byte;
    Minute: byte;
    Second: byte;
    DayOfWeek: byte;
  end;

  {Netware API - требуется NWCALLS.DLL}

function NWGetDefaultConnectionID(var Connection: word): word;
  far; external 'NWCALLS';

function NWGetConnectionNumber(Connection: word; var ConnectionNumber:
  word): word;

far; external 'NWCALLS';

function NWGetConnectionInformation(Connection: word;
  ConnectionNumber: word;
  ObjectName: pchar;
  var ObjectType: word;
  var ObjectID: word;
  var LoginTime: NWTimeStamp): word;
  far; external 'NWCALLS';

function NWReadPropertyValue(Connection: word;
  ObjectName: pChar;
  ObjectType: word;
  PropertyName: pChar;
  DataSetIndex: byte;
  DataBuffer: pChar;
  var More: byte;
  var Flags: byte): word;
  far; external 'NWCALLS';
{ конец секции работы с Netware API }

function GetUserLogin: string;
var

  ConnectionID: word;
  ConnectionNumber: word;
  RC: word;
  Name: array[0..50] of Char;
  ObjectType: word;
  ObjectID: word;
  LoginTime: NWTimeStamp;
begin

  RC := NWGetDefaultConnectionID(ConnectionID);
  RC := NWGetConnectionNumber(ConnectionID, ConnectionNumber);
  RC := NWGetConnectionInformation(ConnectionID,
    ConnectionNumber,
    Name,
    ObjectType,
    ObjectID,
    LoginTime);

  Result := StrPas(Name);
end;

function GetUserFullName(SomeUser: string): string;
{Реально имя пользователя является свойством 'IDENTIFICATON'.
Вы должны вызывать NWReadPropertyValue с параметрами (между прочим) вашего ConnectionID,
имени объекта (такое же, как и логин пользователя, сетевое имя которого мы пытаемся узнать)
и свойство name, которое нам необходимо получить, в нашем случае 'IDENTIFICATION'
(это и есть искомая величина - полное имя пользователя).}

var

  ConnectionID: word;
  RC: word;
  Name: array[0..50] of Char;
  ObjectType: word;
  PropName: array[0..14] of Char;
  DataSetIndex: byte;
  FullName: array[0..127] of Char;
  More: byte;
  Flags: byte;
begin

  RC := NWGetDefaultConnectionID(ConnectionID);
  ObjectType := 256; {пользователь}
  StrPCopy(PropName, 'IDENTIFICATION');
  DataSetIndex := 1;
  StrPCopy(Name, SomeUser);
  RC := NWReadPropertyValue(ConnectionID,
    Name,
    ObjectType,
    PropName,
    DataSetIndex,
    FullName,
    More,
    Flags);
  if RC = 35324 then
    MessageDlg('Пользователь ' + SomeUser + ' на этом сервере не обнаружен!',
      mtError, [mbOK], 0);
  Result := StrPas(FullName);
end;

end.





Похожие по теме исходники

Гадание по имени




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте