Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.068 c
15-1178860817
Steep
2007-05-11 09:20
2007.06.03
FTP сервер


15-1178437370
iZEN
2007-05-06 11:42
2007.06.03
Microsoft признает провал Windows Vista


2-1179047001
IPE
2007-05-13 13:03
2007.06.03
copy folder


2-1179215722
asd_
2007-05-15 11:55
2007.06.03
Русская кодировка в DBF


2-1179306362
Тимофей
2007-05-16 13:06
2007.06.03
Как создать общий компонент на базе TEdit и TComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский