Главная страница
    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-1178168718
Рауф
2007-05-03 09:05
2007.06.03
Перенос БД Paradox на другую машину.


15-1178196954
pavel_guzhanov
2007-05-03 16:55
2007.06.03
Мышка из нержавейки


15-1178864905
alexandr
2007-05-11 10:28
2007.06.03
я ухожу из delphimaster


15-1178207657
SummerRain
2007-05-03 19:54
2007.06.03
Пути к файлам


15-1178222137
Иксик
2007-05-03 23:55
2007.06.03
Военные, особенно победные, песни в хорошем качестве





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский