Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 8 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Чехия
Добрый день всем. Подскажите, позалуйста,
kак в Delphi 5 получить имя текущего пользователя?
В поиске не нашел.

Добавлено спустя 17 минут, 48 секунд:
Никто на знает или я непонятно написал?

_________________
Лучше иметь пузо от пива, чем горб от работы.



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Подойдет?
Код:
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.

Взято из FAQ Озерова. Для работы юнита нужен NWCALLS.DLL

_________________
Лучшая зашита - это нападение.


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
Откуда: Минск
Код:
 function GetCurrentUserName(var CurrentUserName: string): Boolean;
 var
   BufferSize: DWORD;
   pUser: PChar;
 begin
   BufferSize := 0;
   GetUserName(nil, BufferSize);
   pUser := StrAlloc(BufferSize);
   try
     Result := GetUserName(pUser, BufferSize);
     CurrentUserName := StrPas(pUser);
   finally
     StrDispose(pUser);
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   CurrentUserName: string;
 begin
   GetCurrentUserName(CurrentUserName);
   Label1.Caption :=  CurrentUserName;
 end;


Добавлено спустя 2 минуты, 25 секунд:
на форму кидаешь Button и Label

_________________
MESS WITH THE BEST
DIE LIKE THE REST


 

Member
Статус: Не в сети
Регистрация: 13.02.2004
Откуда: Чехия
Извините, навремя выпал из форума.
VidocQ :beer:
Это помогло. Пробовал как более краткое. :-)

_________________
Лучше иметь пузо от пива, чем горб от работы.


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
Откуда: Минск
читай хелп, там всё есть.

_________________
MESS WITH THE BEST
DIE LIKE THE REST


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
VidocQ Лучше уж тогда MSDN :)
А зачем такой длинный код то :), можно и по проще.
Код:
function GetCurrentUserName(var CurrentUserName: string): Boolean;
 var
   BufferSize: DWORD;
   pUser: array[0..255] of char;
 begin
   BufferSize := 255;
   if GetUserName(pUser, BufferSize)<>0 then
     CurrentUserName := StrPas(pUser) else
     CurrentUserName := '';
   GetCurrentUserName:=CurrentUserName<>'';
end;


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
Откуда: Минск
Ray Adams
ну ему что попроще, типа Copy-Paste...
а это нада ещё подумать как запустить :)

_________________
MESS WITH THE BEST
DIE LIKE THE REST


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Тема исчерпана. Закрываю. :)

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 8 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan