Чем поможет пользователю мелькнувшее черное окно? Или ему надо объяснять : набери cmd, потом имя скрипта ... Неудобно. Но все равно плюс за просвещение меня в области бейсика :)
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode(ТекстСкрипта);
Результат = СокрЛП(ScrptCtrl.Run("get_proxy"));
Возврат Результат;
Исключение
Сообщить("глПроксиСервер: Ошибка получения данных из реестра");
Сообщить(ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецФункции
С помощью WMI Code Creator (и респект Душелову за WMI Code Creator 1С) ушло меньше минуты
strComputer = ".";
objWMIService = ПолучитьCOMОбъект("winmgmts:\\" + strComputer + "\root\CIMV2");
colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE",,48);
Для Каждого objItem Из colItems Цикл
Сообщить("----------------------------------- ");
Сообщить("Win32_NetworkAdapterConfiguration");
Сообщить("----------------------------------- ");
Для Каждого Стр Из objItem.IPAddress Цикл
Сообщить("IPAddress: " + Стр);
КонецЦикла;
КонецЦикла;
Так, что это так...ничего особенного...
(8) Да собственно я и не говорю что это что-то особенное. Просто инструмент для админа, которому надоело каждый раз объяснять юзеру как через Пуск->выполнить->cmd и т.д. узнать свой ИП (чтобы подключиться к ниму radmin`ом или чем-нибудь из той же серии).
Согласитесь - проще объяснить что нужно зайти на подключенный logon скриптом сетевой диск (например U:\) и дважды щелкнуть на скрипте.
А то что это можно реализовать и в 1С почему бы и нет - только вот надо ли?
(10) Тогда нужно чтобы у всех были статические IP (т.к. DHCP может выдать другой ИП) и список типа:
Мария Ивановна 192.168.8.231
Михаил Степанович 192.168.8.215
Николай Петрович 192.168.8.88
и т.д.
Звонит Мария Ивановна говорит что у нее 1С выдала непонятное окошко и она не знает как его описать - лезем в список, ищем Марию Ивановну, подрубаемся к ней и смотрим на окошко.
(11) Теперь смысл понятен...только я бы сделал утилиту, которая отсылает отчет администратору, по действию пользователя, т.е. в принципе тоже самое...через чат например можно...например через, если не отрублен , net send ... через AD - все и так в принципе понятно ...
Звонит Мария Ивановна говорит что у нее 1С выдала непонятное окошко и она не знает как его описать - лезем в список
Звонит Мария Ивановна, бац правой кнопкой на на корпоративном чате на её имени, там, помимо прочего, открыть "Комп-блабла". Вот так у реальных пацанов ;)
"Вы еще кипятите? Тогда мы идем к Вам!" :D
Сервис М
(8) cool.vlad4,
-----------------------------------
Win32_NetworkAdapterConfiguration
-----------------------------------
IPAddress: 192.168.1.200
IPAddress: fe80::7879:846:ab7:d429
Получает IPAddress сервера, а не клиента.
Можно пойти дальше: Звонит Мария Ивановна, и тут "оно само" бац и сразу весь расклад: распознало кто это звонит, с какого номера, ну а всякие там IP-шники это уж вообще становится ни к чему, и сразу список действий типа:
1) Ответить
2) Ответить c видео :D
3) Связать с главным бухгалтером
.....
Действие по умолчанию:
N) Послать В ... (и тут список 2-го уровня :D )
Гибкая система настроек, без внешних компонент, не гербалайф :D
Кстати, как-то приходилось скрещивать 1С с Asterisk (http://www.buligin.com/ejauja.html), здесь тоже об этом уже не раз упоминалось, в принципе можно мутить достаточно интересные вещи типа звонить из 1С, определять кто тебе позвонил, получать кое-какую статистику и т.д. Не сказать конечно, что оно очень круто все, но кое-что из этой ВК выжать все таки можно, была бы фантазия и время...
// Функция Avaible проверяет "пингуется" ли указанный IP
Function Avaible(IP) Export
Try
ServicesSet = GetCOMObject("winmgmts:{impersonationLevel=impersonate}");
Items = ServicesSet.ExecQuery("SELECT StatusCode from Win32_PingStatus WHERE address = '" + IP + "' AND Timeout=3");
Except
Return Undefined;
EndTry;
For Each Item In Items Do
If Item.StatusCode = 0 Then
Return True;
Else
Return False;
EndIf;
EndDo;
EndFunction // Avaible()
Показать
Вариант №2:
Function Avaible_2(IP) Export
scrptCtrl = New COMObject("MSScriptControl.ScriptControl");
scrptCtrl.language = "vbscript";
scrptCtrl.addcode("
|Function Avaible()
|Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}"")
|Set objPing = objWMIService.ExecQuery(""select * from Win32_PingStatus where address = '" + IP + "'"")
|For Each objStatus in objPing
|If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
| Avaible = 0
|Else
| Avaible = 1
|End If
|Next
|End function
|");
Return ScrptCtrl.Run("Avaible");
EndFunction // Avaible_2()
Пипец, скоро echo %COMPUTERNAME% && pause как решение будут выкладывать
Вы бы тогда дополнили Ваше "решение c плюсиком автору" отображением информации только по активному интерфейсу,
зачем инфтерфейсы без линка отражать? Благодарности не надо
Set objService = GetObject("winmgmts:\\.\root\CIMV2")
Set Interfaces = objService.ExecQuery("SELECT * FROM Win32_NetworkAdapter where NetConnectionStatus=2")
For Each Interface In Interfaces
Set IPs = objService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where caption='"&Interface.caption&"'")
For Each ip In IPs
strIPAddress = Join(ip.IPAddress, ",")
MsgBox strIPAddress
Next
Next
DNS=Врап.ПолучитьТипИзСборки("System.Net.Dns","System.dll");
// Получение имени компьютера.
host = Dns.GetHostName();
// Получение ip-адреса.
ip =Dns.GetHostByName(host).AddressList.get_Item(0);
Сообщить(ip.ToString());
//или
Адреса=Dns.GetHostByName(host).AddressList:
Для каждого адрес из Адреса Цикл
Сообщить(адрес .ToString());
КонецЦикла
Здравия!
Так для 7.7 что-нибудь для определения IP клиента терминального подключения есть?
Попробовал многое, но получается IP только самого сервера а не клиента.
Прошу помощи.
Благодарю.
Попробовал с другого компа - отработал!
Теперь буду разбираться с 1С 7.7
PS Так и не понял, как это вставить в 1С 7.7.
Если можно пришлите код для !c 7.7. Просто не понимаю, что из скрипта куда правильно вставить.
Благодарю.
(32)
Хм-м... Так это как запуск стороннего приложения. А надо получить переменную с IP клиента.
У меня все (пытаюсь по-аналогии с 7 постом) пишет ошибка скрипта... Хотя Имя пользователя и компа получает правильно...
Ещё одно но: на сервере терминалов под учеткой с правами "Пользователи удаленного рабочего стола" скрипт не отрабатывает - "Разрешение отклонено GetObject 800А0046". Попробовал через SWbemLocator - "Отказано в доступе 80070005"...