Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Внизимя пользователя Найти похожие ветки
← →
lehich © (2004-05-18 11:54) [0]каким образом получить имя активной учетной записи???
реально ли получить список всех учетных записей???
заранее премного благодарен...
← →
Игорь Шевченко © (2004-05-18 12:15) [1]1) GetUserName
2) NetUserEnum
← →
lehich © (2004-05-18 12:17) [2]сенкс... респект...)))
← →
lehich © (2004-05-18 12:35) [3]я конечно дико извиняюсь за глупый вопрос, но почитав справку дельфи ничего не понял... делаю присваивание:
name := GetUserName;
выскакивает ошибка:
[Error] log.dpr(35): Undeclared identifier: "GetUserName"
подскажите пожалуйста что не так???
← →
clickmaker © (2004-05-18 14:31) [4]
> делаю присваивание
кто разрешил?!
← →
lehich © (2004-05-18 15:54) [5]не надо юродстововать... лучше направьте на путь истинный...))))
← →
evvcom © (2004-05-18 16:07) [6]А чего "юродствовать"? Действительно нельзя так присваивать. Из 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 16:18) [7]так нифига не понял...((((((
в самом теле программы прописать:
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 где прописывать???
← →
lehich © (2004-05-18 16:55) [8]и параллельно возник еще один вопрос:
как узнать имя пользователя под учетной записью которого сидишь в данный момент?
← →
clickmaker © (2004-05-18 17:44) [9]GetUserName + NetUserGetInfo
← →
lehich © (2004-05-18 17:56) [10]2clickmaker хех.... добрая душа...))))) ответь тогда плыз на предыдущий мой месс...))))
← →
Игорь Шевченко © (2004-05-18 18:07) [11]Книги, F1, examples - рулез фарева.
← →
DVM (2004-05-18 18:48) [12]
> [7] lehich © (18.05.04 16:18)
Вообще то неплохо было бы книжки почитать вначале.
Но да ладно.
Никаго присваивания делать нельзя. Функция возвращает же BOOL, а не строку.
Вначале надо завести переменную типа PChar и выделить под нее память (GetMem) в нужном количестве (скажем 255 символов). Затем вызвать данную функцию, указав эту переменную и размер буфера (255 в нашем случае). В нашей переменной окажется результат. Его мы используем (скопируем например в переменную типа string), и затем не забудем освободить память (FreeMem).
Так происходит в WinApi работа почти со всеми функциями, результатом которых является строка.
← →
lehich © (2004-05-19 09:07) [13]всем спасибо большое за помощь и уроки...))))) бум учиться дальше...)))
← →
lehich © (2004-05-19 10:22) [14]тыкс... приложение консольное... прописываю в 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 идет...(((( в чем ошибку допустил???
Заранее премного благодарен...
← →
Плохиш (2004-05-19 10:34) [15]>lehich © (19.05.04 10:22) [14]
Заменяешь GetMem/FreeMem на StrAlloc/StrDispose, соответственно.
← →
NAlexey © (2004-05-19 10:48) [16]>Плохиш (19.05.04 10:34) [15]
А вот и неправда, ошибочка не в этом. StrAlloc и StrDispose вообще backward compatibility routines.
← →
Игорь Шевченко © (2004-05-19 10:49) [17]Код надо приводить целиком, с указанием строки. Нам гадать, где у тебя строка 36 или как ?
← →
lehich © (2004-05-19 10:52) [18]я же написал, что ошибка при использовании GetUserName, следовательно ошибка в строке:
GetUserName (X, 255);
← →
NAlexey © (2004-05-19 11:07) [19]Начало - lehich © (18.05.04 11:54)
Еще ищем решение - lehich © (19.05.04 10:52) [18]
Сутки!!!!
← →
NAlexey © (2004-05-19 11:21) [20]
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;
← →
lehich © (2004-05-19 11:26) [21]2NAlexey спасибо тебе добрый человек...))))
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c