Вопрос № 175025: Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Проверить есть ли соединение с интернетом, но только точно, или нет соединения или нет соединения с локальным диском, имеется ввиду когда Интернет Эксп...
Вопрос № 175026: Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Открыть, открыть страницу с именем ..., закрыть Интернет Эксплойер Спасибо Эндрю ...
Вопрос № 175025:
Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Проверить есть ли соединение с интернетом, но только точно, или нет соединения или нет соединения с локальным диском, имеется ввиду когда Интернет Эксплойер используется не для интернета, а как средство соединения по локальной сети Спасибо Эндрю
Отвечает Vasiliy83, Практикант :
Здравствуйте, Ципихович Эндрю. Нашел пару вариантов для проверки доступности хоста. Вот первый код:
Код:
Const NETWORK_ALIVE_AOL = &H4 Const NETWORK_ALIVE_LAN = &H1 Const
NETWORK_ALIVE_WAN = &H2 Private Type QOCINFO dwSize As Long dwFlags As Long dwInSpeed As Long 'байты в секунду dwOutSpeed As Long 'байты в секунду End Type Private Declare Function IsDestinationReachable Lib "SENSAPI.DLL" Alias "IsDestinationReachableA" (ByVal lpszDestination As String, ByRef lpQOCInfo As QOCINFO) As Long Private Sub Main()
Dim Ret As QOCINFO Ret.dwSize = Len(Ret) If IsDestinationReachable("rfpro.ru", Ret) = 0 Then 'вывод сообщения в зависимости от ответа MsgBox "Доступа нет!" Else MsgBox "Доступ есть!" + vbCrLf + _ "Скорость передачи данных от хоста: " + Format$(Ret.dwInSpeed / 1024, "#.0") + " Кб/с," + vbCrLf + _ "Скорость передачи данных к хосту: " + Format$(Ret.dwOutSpeed
/ 1024, "#.0") + " Кб/с." End If End Sub
этот код проверяет именно связь (отправка ICMP-пакета) с хостом. В случае неудачи функция IsDestinationReachable возвращает 0, в случае успеха - 1. Проверил на несуществующих хостах - 0, на рабочих - 1. В качестве хоста можно указать IP-адрес компьютера или DNS-имя (т.е. проверить связь как в Интернет-сайтом, так и с локальным ПК). Изменить данный код под свои
задачи не составит труда. Одно "но" - если хост жив, но на нем запрещен ответ на ICMP, то Word виснет! (может проблема только у меня...) показания скорости какие-то неправильные (видимо не совсем верно используется функция, но оно и не требуется)
второй код такой:
Код:
Sub
TestPing() Dim strComputer As String strComputer = "rfpro.ru" 'имя хоста, который проверяется If Not SystemOnline(strComputer) Then MsgBox "Этот хост мертв: " & strComputer, vbOKOnly, "Статус хоста" Else MsgBox "Хост жив!", vbOKOnly, "Статус" End If End Sub
Function SystemOnline(ByVal ComputerName As String) ' функция возвращает
True если хост пингуется ' имя хоста указывается или IP-адресом или DNS-именем ' Класс Win32_PingStatus использованный в данной функции требует ОС Windows XP или более позднюю Dim colPingResults As Variant Dim oPingResult As Variant Dim strQuery As String
' Define the WMI query strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'"
' запуск проверки через WMI Set colPingResults
= GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery) ' преобразование WMI-результата в True или False For Each oPingResult In colPingResults If Not IsObject(oPingResult) Then SystemOnline = False ElseIf oPingResult.StatusCode = 0 Then SystemOnline = True Else SystemOnline = False End If Next End Function
код также прост и изменить его не составляет труда. в случае, есл
и хост жив, но запрещен ответ на ICMP - стабильно показывает, что хост неактивен и никаких зависаний.
Ответ отправил: Vasiliy83, Практикант
Ответ отправлен: 08.12.2009, 19:29
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 257498
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 175026:
Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Открыть, открыть страницу с именем ..., закрыть Интернет Эксплойер Спасибо Эндрю
Sub OpenAndCloseIE() Dim ie Set ie = CreateObject("InternetExplorer.Application") ie.Navigate "http://rfpro.ru" ie.Visible = True ie.Quit Set ie = Nothing End Sub
Такой код откроет окно IE, в нем
страницу rfpro.ru, после чего закроет окно причем скорее всего Вы даже не успеете увидеть страницу, так что лучше поставить таймер или ожидание команды, но это на Ваше усмотрение
Ответ отправил: Vasiliy83, Практикант
Ответ отправлен: 08.12.2009, 17:10
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 257495
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.