C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 135 - GetUserName / Win 32 API / Win32 API

Шаг 135 - GetUserName

Получает имя пользователя для текущего процесса. Обычно это имя пользователя зарегистрировавшегося в системе. Имя сеанса:

135_1.gif (2737 b)

Вот она.

BOOL GetUserName
(  
	LPTSTR lpBuffer,	// указатель на буфер
	LPDWORD nSize	// получает размер возвращает количество символов
);

Размер буфера должен быть достаточный для того, чтобы вместить пользователя. Определение размера носит имя UNLEN и описана в Lmcons.h. При неудачном выполнении функция вернет 0:

#define UNLEN 256	// Maximum user name length

Давайте совместим "Шаг 38 - GetComputerName()" и этот шаг, создав универсальный класс, который нам поможет легко получать эти имена. Я применю технологию описанную в шаге "Шаг 108 - Универсальные классы". Ведь имя можно получить по разному, например, получить из реестра. Весь код и структуру классов можно посмотреть в проекте, а вот сам конкретный код получения функции имени пользователя.

CString CEasyGetUserName::Get()
{
	char buffer[UNLEN+1];		// буфер
	DWORD size;			// размер
	size=sizeof(buffer);		// размер буфера
	if (GetUserName(buffer,&size)==0)
		throw "Error GetUserName";	// при ошибке функция вернет 0
	return buffer;			// вернуть результат
}

Структура классов довольно сложная для такой простой задачи. Стоит создавать такое количество классов или нет, это вопрос. Мне просто нравиться так программировать. Можно в любой момент все изменить и это хорошо. Ну, например при переходе например на Windows 9000 beta 2 bild 199 :-) какой нибуть все что нужно только исправить одну функцию а все остальное будет работать.


Загрузить проект | | |
Автор Каев Артем.
[AD]