Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Vasiliy83
Статус: Практикант
Рейтинг: 932
∙ повысить рейтинг »
Megaloman
Статус: Бакалавр
Рейтинг: 809
∙ повысить рейтинг »
Botsman
Статус: Профессионал
Рейтинг: 508
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:953
Дата выхода:13.12.2009, 17:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:371 / 100
Вопросов / ответов:2 / 2

Вопрос № 175025: Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Проверить есть ли соединение с интернетом, но только точно, или нет соединения или нет соединения с локальным диском, имеется ввиду когда Интернет Эксп...


Вопрос № 175026: Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Открыть, открыть страницу с именем ..., закрыть Интернет Эксплойер Спасибо Эндрю ...

Вопрос № 175025:

Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при
помощи ВБА
Проверить есть ли соединение с интернетом, но только точно, или нет
соединения или нет соединения с локальным диском, имеется ввиду когда
Интернет Эксплойер используется не для интернета, а как средство
соединения по локальной сети
Спасибо Эндрю

Отправлен: 08.12.2009, 16:51
Вопрос задал: Ципихович Эндрю, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает 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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 175026:

    Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при
    помощи ВБА
    Открыть, открыть страницу с именем ..., закрыть Интернет Эксплойер
    Спасибо Эндрю

    Отправлен: 08.12.2009, 16:54
    Вопрос задал: Ципихович Эндрю, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Vasiliy83, Практикант :
    Здравствуйте, Ципихович Эндрю.
    Код:
    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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное