![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
имя пользователя [D7, WinXP]
lehich © (2004-05-18 11:54:00)каким образом получить имя активной учетной записи???
реально ли получить список всех учетных записей???
заранее премного благодарен...
lehich (2004-05-19 11:26:00) [1]2NAlexey спасибо тебе добрый человек...))))
NAlexey (2004-05-19 11:21:00) [2]
procedure TForm1.Button1Click(Sender: TObject);
const
MAX_USERNAME = 256;
var
User: array[0..MAX_USERNAME] of Char;
Size: Cardinal;
begin
Size:= MAX_USERNAME + 1;
if GetUserName(User, Size) then
ShowMessage(StrPas(User));
end;
NAlexey (2004-05-19 11:07:00) [3]Начало - lehich © (18.05.04 11:54)
Еще ищем решение - lehich © (19.05.04 10:52) [18]
Сутки!!!!
lehich (2004-05-19 10:52:00) [4]я же написал, что ошибка при использовании GetUserName, следовательно ошибка в строке:
GetUserName (X, 255);
Игорь Шевченко (2004-05-19 10:49:00) [5]Код надо приводить целиком, с указанием строки. Нам гадать, где у тебя строка 36 или как ?
NAlexey (2004-05-19 10:48:00) [6]>Плохиш (19.05.04 10:34) [15]
А вот и неправда, ошибочка не в этом. StrAlloc и StrDispose вообще backward compatibility routines.
Плохиш (2004-05-19 10:34:00) [7]>lehich © (19.05.04 10:22) [14]
Заменяешь GetMem/FreeMemна StrAlloc/StrDispose, соответственно.
lehich (2004-05-19 10:22:00) [8]тыкс... приложение консольное... прописываю в uses System т.к. GetMem использует этот модуль... далее описываю переменную X :PChar; далее
GetMem (X, 255);
GetUserName (X, 255);
LogData.user := X; // LogData.user :String;
FreeMem (X); //посмотрел в хелпнике что не обязательно указывать размер, можно же и так???
в конечном результате получаем:
[Error] log.dpr(36): Types of actual and formal var parameters must be identical
понимаю что несовпадение параметров при использовании GetUserName... блинство... тяжко как-то у меня WinAPI идет...(((( в чем ошибку допустил???
Заранее премного благодарен...
lehich (2004-05-19 09:07:00) [9]всем спасибо большое за помощь и уроки...))))) бум учиться дальше...)))
DVM (2004-05-18 18:48:00) [10]
> [7] lehich © (18.05.04 16:18)
Вообще то неплохо было бы книжки почитать вначале.
Но да ладно.
Никаго присваивания делать нельзя. Функция возвращает же BOOL, а не строку.
Вначале надо завести переменную типа PChar и выделить под нее память (GetMem) в нужном количестве (скажем 255 символов). Затем вызвать данную функцию, указав эту переменную и размер буфера (255 в нашем случае). В нашей переменной окажется результат. Его мы используем (скопируем например в переменную типа string), и затем не забудем освободить память (FreeMem).
Так происходит в WinApi работа почти со всеми функциями, результатом которых является строка.
Игорь Шевченко (2004-05-18 18:07:00) [11]Книги, F1, examples - рулез фарева.
lehich (2004-05-18 17:56:00) [12]2clickmaker хех.... добрая душа...))))) ответь тогда плыз на предыдущий мой месс...))))
clickmaker (2004-05-18 17:44:00) [13]GetUserName + NetUserGetInfo
lehich (2004-05-18 16:55:00) [14]и параллельно возник еще один вопрос:
как узнать имя пользователя под учетной записью которого сидишь в данный момент?
lehich (2004-05-18 16:18:00) [15]так нифига не понял...((((((
в самом теле программы прописать:
BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
а потом можно будет сделать присваивание?
а какой адрес ставить (address of name buffer и address of size of name buffer) ???? GetUserName(name, size) NAME где прописывать???
evvcom (2004-05-18 16:07:00) [16]А чего "юродствовать"? Действительно нельзя так присваивать. Из Win32 API:
BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
Значит BoolResult := GetUserName(name, size);
Но перед этим надо выделить память размером size для name и в uses прописать Windows, хотя этот модуль прописывается везде автоматом.
lehich (2004-05-18 15:54:00) [17]не надо юродстововать... лучше направьте на путь истинный...))))
clickmaker (2004-05-18 14:31:00) [18]
> делаю присваивание
кто разрешил?!
lehich (2004-05-18 12:35:00) [19]я конечно дико извиняюсь за глупый вопрос, но почитав справку дельфи ничего не понял... делаю присваивание:
name := GetUserName;
выскакивает ошибка:
[Error] log.dpr(35): Undeclared identifier: 'GetUserName'
подскажите пожалуйста что не так???
lehich (2004-05-18 12:17:00) [20]сенкс... респект...)))