// Глобальная переменная в которой будем хранить // известные нам типы статусов сетевой карты перем сзТипСтатуса; // Глобальная переменая перем обШелл; //******************************************* // стрСтатусАдаптера(стрИмя = "") // // Параметры: // стрИмя - Строка. Имя сетевой статус которой надо определить. // В том виде как показа в сетвых подключениях. // // Возвращаемое значение: // Строка. Статус заданой сетевой. // // Описание: // Функция определяет статус сетевой. // функция стрСтатусАдаптера(стрИмя = "") Ответ = ""; // Попытаемся получить статус через контрол скриптов попытка сзСтевые = создатьобъект("списокзначений"); // Выполняем скрипт. Из полученного значения пытаемся // сформировать список значений сзСтевые = значениеизстроки(обШелл.Run("strGetAdapterInfo")); исключение // По каким-то причинам выполнить скрипт не удалось Ответ = "Статус установить не удалось"; конецпопытки; // Если в возращаемом значение пустая строка, то скрипт // выполнился. Можно смотреть дальше. если Ответ = "" тогда // Получаем индекс статуса сетевой. стрСтатус = строка(сзСтевые.Получить(стрИмя)); // Проверяем на пустое значение индекса. если пустоезначение(стрСтатус) = 1 тогда // Если индекс пуст, то сетевая суказанным именем отсуствует Ответ = "Сетевая с таким именем отсуствует"; иначе // Ищем индекс статуса в известных нам типов статуса. чисПозиция = сзТипСтатуса.НайтиЗначение(стрСтатус); если чисПозиция = 0 тогда // Не нашли. Смотрим MSDN Ответ = "Не известный тип статуса сетевой"; иначе // Получаем строковое представление статуса. сзТипСтатуса.ПолучитьЗначение(чисПозиция, Ответ); конецесли; конецесли; конецесли; // Возвращаем полученный статус возврат Ответ; конецфункции; //******************************************* // Этот блок обязателен. // Необходимо что бы он отработал до первого вызова // функции стрСтатусАдаптера //******************************************* // Создаем объект для управления скриптами обШелл = создатьобъект("MSScriptControl.ScriptControl"); // Устанавливаем рабочий язык для выполнения скриптов обШелл.Language = "VBScript"; // Сам срипт который соберет статусы всех сетевых устройств тхтКод = " |function strGetAdapterInfo() | dim objNetworkAdapter | Answer = ""{""""СписокЗначений"""",{"" | set objWMI = getobject(""WinMgmts:\\.\Root\CIMV2"") | set objNetworkAdapters = objWMI.ExecQuery(""S_elect * FROM Win32_NetworkAdapter"", , 48) | for each objNetworkAdapter in objNetworkAdapters | Answer = Answer & ""{{""""Строка"""","""""" & objNetworkAdapter.NetConnectionStatus &_ | """"""}, """""" & objNetworkAdapter.NetConnectionID & """""",""""0""""}"" | | next | Answer = Answer & ""}}"" | strGetAdapterInfo = Answer | end function"; // Добавим наш скрипт в котрол скриптов обШелл.AddCode(тхтКод); // Создадим список значений в который поместим все известные нам // виды статуса сетевых устройств. сзТипСтатуса = создатьобъект("списокзначений"); // Поместим в список значений виды статусов их строковое представление сзТипСтатуса.ДобавитьЗначение("0", "Отключенно"); сзТипСтатуса.ДобавитьЗначение("1", "Подключение"); сзТипСтатуса.ДобавитьЗначение("2", "Подключено"); сзТипСтатуса.ДобавитьЗначение("3", "Отключение"); сзТипСтатуса.ДобавитьЗначение("4", "Устройство не представленно"); сзТипСтатуса.ДобавитьЗначение("5", "Устройство отключено"); сзТипСтатуса.ДобавитьЗначение("6", "Устройство не исправно"); сзТипСтатуса.ДобавитьЗначение("7", "Соединение разорвано"); сзТипСтатуса.ДобавитьЗначение("8", "Аутентификация"); сзТипСтатуса.ДобавитьЗначение("9", "Аутентификация прошла успешно"); сзТипСтатуса.ДобавитьЗначение("10", "Аутентификация не прошла"); сзТипСтатуса.ДобавитьЗначение("11", "Неправильный адресс"); сзТипСтатуса.ДобавитьЗначение("12", "Требуется полномочия");