Класс для получения параметров сессии (включая данные терминального сервера и клиентской машины) и их вывода фоном в окне 1С.
Общая информация
Есть такая замечательная утилита BgInfo от TechNet (http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx), которая позволяет поверх обоев рабочего стола вывести информацию о ПК, сеансе пользователя и т.д.
Нечто подобное, в гораздо упрощенном варианте, позволяет сделать этот 1С++ класс. Выводит фоном в главном окне 1С параметры сессии, которые состоят из:
- Названия 1С. Выводить ЗаголовокСистемы().
- Имя пользователя в 1С.
- Системное имя пользователя.
- Имя сервера, если 1С запущена в терминальной сессии.
- IP адрес сервера, если 1С запущена в терминальной сессии.
- Имя локального компьютера. Даже если 1С запущена в терминальной сессии будет получена имя клиента RDP.
- IP адрес локального компьютера. По полученному имени пытаемя определить IP адрес клиента через парсинг вывода ping-а.
Пример использования
Для работы необходимо:
- Подключить класс.
- Чтобы вывести информацию в главное окно 1С:
oBGInfo = СоздатьОбъект(«BgInfo»); oBGInfo.Выполнить(«Ваши учетные:»); - Не забудьте зарегистрировать ActiveX компоненту.
Недостатки
- Надо понимать, что данные клиентской машины, в случае подключения к терминальному серверу не всегда можно получить, т.к. это зависит от типов клиентов.
- IP адрес клиентской машины получается путем простого парсинга ответа на ping. Его тоже не всегда можно получить.
Какую инфу можно получить если есть сервер под thinstation грузится 50-55 человек. У всех одну и туже или каждой машины отдельно?
Для получения имени терминального клиента используется:
Для Microsoft Terminal Services отрабатывает нормально, что будет под ThinStation не знаю, не тестил. Нет его в нашей инфраструктуре.
А зачем пинг в командаСистемы ?
проще whs + run… нет окошка мигающего.
Мигающее окошко уберу. Думал сразу как-нить сделать определение локального IP пингом в отдельном потоке, или на крайний случай во время простоя выполнять, а то еще долго делается.
Поделку не качал, активикс.. это который от bgInfo ?
или что другое ?
В поделки использую GFLAX для создания bmp с нужным текстом, который устанавливается фоном через Сервис.УстановитьОбои().
Про мигающее окошко через Команду системы догадался?
(6) у тебя в описании к поделке прямым текстом :))
Если подключился к терминалке на одном рабочем месте, потом сессию РАЗЪЕДИНИЛ, но сессия осталась незакрытой и потом подконнектился к ней с другого клиентского места — какой клиентнейм будет фигурировать?
Зависит от того куда в конфе встроен п.2 из раздела «Пример использования». Естественно если один раз при старте системы вызывать .Выполнить(), то при подключении к имеющейся rdp-сессии с другого клиента вы увидите старую инфу.
Как и было сказано в (3), для устранения недостатка №3 достаточно заменить:
на