Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1086355475
BFG9k
2004-06-04 17:24
2004.06.27
Ошибка функции ExecuteMacro


8-1081833080
$tranger
2004-04-13 09:11
2004.06.27
Координатная плоскость


3-1086030482
Курдль
2004-05-31 23:08
2004.06.27
Специалистам ADO.NET: какой принцип работы с соединениями?


8-1080722002
Pul
2004-03-31 12:33
2004.06.27
Битмап в метафайле


3-1085972910
Victor_A
2004-05-31 07:08
2004.06.27
Как узнать, что у базы данных сменили пароль





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