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

Вниз

current user name   Найти похожие ветки 

 
IPE   (2007-05-13 12:56) [0]

Как получить имя пользователя или адрес рабочего стола. На разных ПК этот адрес разный, поэтому необходимо определить имя юзера, кр. сидит за компом. Как это можно сделать?


 
Anatoly Podgoretsky ©   (2007-05-13 13:09) [1]

> IPE  (13.05.2007 12:56:00)  [0]

Что такое адрес рабочего стола?


 
Cobalt ©   (2007-05-13 14:45) [2]

getusername


 
Германн ©   (2007-05-13 17:02) [3]


> Anatoly Podgoretsky ©   (13.05.07 13:09) [1]
>
> > IPE  (13.05.2007 12:56:00)  [0]
>
> Что такое адрес рабочего стола?
>

Ну например "адрес рабочего стола" - Москва, 3-я улица Строителей, дом 25, квартира 12, вторая комната налево, дальний правый угол.
:)


 
DVM ©   (2007-05-13 17:16) [4]

Может это путь к папке Рабочий стол?


 
IPE   (2007-05-13 18:32) [5]

гениально, если кто-то не дай бог в Винде работает и не дай бог в Эксплорере, то там путь к папке называется Адрес (т.е. равнозначные понятия) - ну так, для общего развития


 
IPE   (2007-05-13 18:37) [6]


> Cobalt ©   (13.05.07 14:45) [2]
> getusername

что означают параметры этой функции


 
DVM ©   (2007-05-13 18:48) [7]


> то там путь к папке называется Адрес


> адрес рабочего стола


SHGetSpecialFolderPath() + CSIDL_DESKTOP


 
IPE   (2007-05-13 20:07) [8]

SHGetSpecialFolderPath() + CSIDL_DESKTOP - неизвестный идентификатор, их надо ВАРить или подключать к.л. модуль в Юзес?

getusername возвращает значение лонгбул - что оно означает, что означают параметры этой функции?


 
DVM ©   (2007-05-13 20:18) [9]


> SHGetSpecialFolderPath() + CSIDL_DESKTOP - неизвестный идентификатор

uses ShlObj;


> getusername возвращает значение лонгбул - что оно означает,
>  что означают параметры этой функции?

Ctrl+F1 на этой функции - и читай справку она у нас одинаковая.


 
IPE   (2007-05-13 20:46) [10]


> > getusername возвращает значение лонгбул - что оно означает,
>
> >  что означают параметры этой функции?
>
> Ctrl+F1 на этой функции - и читай справку она у нас одинаковая.
>

Там только общее описание  функции - пааметры не описаны.


 
IPE   (2007-05-13 20:50) [11]


> > SHGetSpecialFolderPath():longbool + CSIDL_DESKTOP

где здесь строка с путем к Рабочему столу и куда вписывать константу CSIDL_DESKTOP?


 
{RASkov} ©   (2007-05-13 21:30) [12]

uses ShlObj;
var PDesk, PUser: PChar; N: Cardinal;
begin
 GetMem(PDesk, 255); GetMem(PUser, 255);
 SHGetSpecialFolderPath(Handle, PDesk, CSIDL_DESKTOP, False);
 N:=SizeOf(PUser);
 GetUserName(PUser, N);
 ShowMessage("DeskTop:  "+PDesk);
 ShowMessage("UserName: "+PUser);
 FreeMem(PDesk); FreeMem(PUser);
end;


 
IPE   (2007-05-13 22:35) [13]

thank, только имя не выводится User NAme:  ничего.


 
DVM ©   (2007-05-13 22:42) [14]


> thank, только имя не выводится User NAme:  ничего.

в [12] небольшая ошибка

function GetUserFromWindows: string;
var
 UserName : string;
 UserNameLen : Dword;
begin
 UserNameLen := 255;
 SetLength(userName, UserNameLen);
 if GetUserName(PChar(UserName), UserNameLen) then
   Result := Copy(UserName,1,UserNameLen - 1)
 else
   Result := "Unknown";
end;


 
DVM ©   (2007-05-13 22:44) [15]


> N:=SizeOf(PUser);

N всегда будет равно 4


 
{RASkov} ©   (2007-05-13 22:48) [16]

> [13] IPE   (13.05.07 22:35)
> thank, только имя не выводится User NAme:  ничего.

  > в [12] небольшая ошибка

Ну да N всегда 4 :) Изменить на
//N:=SizeOf(PUser);
N:=255;
> IPE
Можно было и догадаться ;)


 
{RASkov} ©   (2007-05-13 22:49) [17]

Ну вот опять не обновил перед отправкой :(


 
begin...end ©   (2007-05-13 22:50) [18]


> N:=255;

256


 
IPE   (2007-05-13 22:56) [19]

млин, как сам не догадался?


 
begin...end ©   (2007-05-13 23:00) [20]

А, так там не string, а PChar... Тогда 257.


 
DVM ©   (2007-05-13 23:04) [21]


> Тогда 257.

257 то почему? Он же выделил всего 255 памяти.


 
begin...end ©   (2007-05-13 23:05) [22]


> Он же выделил всего 255 памяти.

А надо 257.


 
{RASkov} ©   (2007-05-13 23:07) [23]

> [22] begin...end ©   (13.05.07 23:05)

Т.е. надо было
N:=257;
GetMem(PUser, N);
?


 
begin...end ©   (2007-05-13 23:08) [24]

> {RASkov} ©   (13.05.07 23:07) [23]

Да.


 
{RASkov} ©   (2007-05-13 23:09) [25]

> [22] begin...end ©   (13.05.07 23:05)

+1 для #0 а еще 1 для чего?
Спасибо.


 
{RASkov} ©   (2007-05-13 23:10) [26]

Фу... блин .... не то спросил, понятно все :)


 
DVM ©   (2007-05-13 23:12) [27]


> А надо 257.

Почему именно 257? Сколько хочешь столько и выделяй - не хватит - будет ошибка.

В примере с MSDN вот вообще 32767 выделяют.


 
begin...end ©   (2007-05-13 23:13) [28]

> {RASkov} ©   (13.05.07 23:09) [25]

lpBuffer
[out] A pointer to the buffer to receive the user"s logon name. If this buffer is not large enough to contain the entire user name, the function fails. A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in Lmcons.h.

Lmcons.h:

#define UNLEN       256                 // Maximum user name length


 
{RASkov} ©   (2007-05-13 23:17) [29]

> [27] DVM ©   (13.05.07 23:12)

Видимо макс. имя может быть 256 символов. + #0
А выделять можно сколько угодно, после GetUserName(PUser, N);
в N будет кол-во скопированных символов в PUser.

> [28] begin...end ©   (13.05.07 23:13)

Спасибо ;)


 
begin...end ©   (2007-05-13 23:18) [30]

> DVM ©   (13.05.07 23:12) [27]

>  Сколько хочешь столько и выделяй - не хватит - будет ошибка.
А зачем нужна ошибка?

>  В примере с MSDN вот вообще 32767 выделяют.
А зачем выделять 32767, если достаточно 257?


 
{RASkov} ©   (2007-05-13 23:22) [31]

> [28] begin...end ©   (13.05.07 23:13)

В моей справке так:
The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system.

BOOL GetUserName(

   LPTSTR lpBuffer, // address of name buffer
   LPDWORD nSize  // address of size of name buffer
  );
Parameters
....
Header File: winbase.h


и про Lmcons.h там ни слова... :( Еще раз благодарю.


 
begin...end ©   (2007-05-13 23:27) [32]

> {RASkov} ©   (13.05.07 23:22) [31]

> В моей справке так: ...

В моей -- тоже. Но Delphi-справка по API-функциям сильно урезана. В [28] приведена цитата из MSDN: http://msdn2.microsoft.com/en-us/library/ms724432.aspx


 
DVM ©   (2007-05-13 23:32) [33]

В справке BDS2006 и D2007 все нормально.



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

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

Наверх




Память: 0.54 MB
Время: 0.059 c
11-1161253850
SergeR
2006-10-19 14:30
2007.06.03
Непонятки с условием If mouse.shift>0


2-1179118293
vamp_avp
2007-05-14 08:51
2007.06.03
Как узнать дату изменения файла?


15-1178294407
@!!ex
2007-05-04 20:00
2007.06.03
Рамка для фотки.


15-1178535115
@!!ex
2007-05-07 14:51
2007.06.03
Подскажите недорогой EGPRS модем.


2-1179146712
sqllamer
2007-05-14 16:45
2007.06.03
данные из stringgrid в БД mysql