Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll (число прочтений - 3195 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
08. Октября 2009 :: 10:01
Печать  
Товарищ metаeditor бескорыстно сделал благо мне и другим 1С-никам, к-е будут пользоваться новой компонентой (по мотивам http://www.1cpp.ru/forum/YaBB.pl?num=1247208308/16#16).

Данная компонента позволяет через wtsapi32.dll посредством WTSQuerySessionInformationA получать информацию о текущей сессии терминального сервера, в к-й конечно же работает 1С (http://msdn.microsoft.com/en-us/library/aa383838%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/aa383861%28VS.85%29.aspx):

Код
Выбрать все
Если ЗагрузитьВнешнююКомпоненту("WTSApiAddin.dll") = 1 Тогда
  терминалИнфо = СоздатьОбъект("AddIn.WTSApi");
  Сообщить("InitialProgram: " + терминалИнфо.ПолучитьПараметрыСессии(0));
  Сообщить("ApplicationName: "    + терминалИнфо.ПолучитьПараметрыСессии(1));
  Сообщить("WorkingDirectory: "    + терминалИнфо.ПолучитьПараметрыСессии(2));
  Сообщить("OEMId: "    + терминалИнфо.ПолучитьПараметрыСессии(3));
  Сообщить("SessionId: "    + терминалИнфо.ПолучитьПараметрыСессии(4));
  Сообщить("UserName: "    + терминалИнфо.ПолучитьПараметрыСессии(5));
  Сообщить("WinStationName: "    + терминалИнфо.ПолучитьПараметрыСессии(6));
  Сообщить("DomainName: "    + терминалИнфо.ПолучитьПараметрыСессии(7));
  Сообщить("ConnectState: "    + терминалИнфо.ПолучитьПараметрыСессии(8));
  Сообщить("ClientBuildNumber: "    + терминалИнфо.ПолучитьПараметрыСессии(9));
  Сообщить("ClientName: "    + терминалИнфо.ПолучитьПараметрыСессии(10));
  Сообщить("ClientDirectory: "    + терминалИнфо.ПолучитьПараметрыСессии(11));
  Сообщить("ClientProductId: "    + терминалИнфо.ПолучитьПараметрыСессии(12));
  Сообщить("ClientHardwareId: "    + терминалИнфо.ПолучитьПараметрыСессии(13));
  Сообщить("ClientAddress: "	  + терминалИнфо.ПолучитьПараметрыСессии(14));
  Сообщить("ClientDisplay: "	  + терминалИнфо.ПолучитьПараметрыСессии(15));
  Сообщить("ClientProtocolType: "	  + терминалИнфо.ПолучитьПараметрыСессии(16));
  
 Иначе
  Сообщить("Компонента WTSApiAddin.dll не загружена");
 КонецЕсли; 


У меня работает. Пока багов не обнаружил.
Прикрепляю  к сообщению компоненту и исходники, великодушно предоставленные metaeditor-ом.
  

WTSApi.7z ( 145 KB | Загрузки )
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
Ответ #1 - 08. Октября 2009 :: 11:19
Печать  
Чего дает эта компонента?
Профит в общих чертах?
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
Ответ #2 - 08. Октября 2009 :: 12:53
Печать  
Мне, например, эта компонента дает две полезные вещи:
1. Узнаю IP пользователя
2. Периодически проверяю состояние сессии - не отвалилась ли. А то бывает что пользователи после переподкючения попадают в чужую сессию. Если сессия отвалилась, а потом снова стала активной проверяю, если пользователь тот же самый.
  

Untitled.png ( 34 KB | Загрузки )
Untitled.png
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
Ответ #3 - 08. Октября 2009 :: 12:55
Печать  
Было бы замечательно, чтобы еще и получение HardwareID правильно работало. Но в интернете у многих та же проблема - возвращает 0.
Если кто еще знает способ как узнать не тот IP, что клиент сообщает серверу (т.е. внутренней сети), а реальный - скажите.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
Ответ #4 - 17. Октября 2009 :: 09:37
Печать  
А можно как нибудь получить время простоя сесси?
  
Наверх
wwwICQ  
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: ВК WTSApiAddin.dll - информация о текущей сессии чз wtsapi32.dll
Ответ #5 - 17. Октября 2009 :: 11:26
Печать  
Anatol писал(а) 17. Октября 2009 :: 09:37:
А можно как нибудь получить время простоя сесси?

Код
Выбрать все
Информатор.ПолучитьВремяПростояСистемы(); 


http://www.1cpp.ru/docum/icpp/html/Informer.html#getidletimeofsystem
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать