Форум: "Начинающим";
Текущий архив: 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