Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверить, есть ли подключение к Интернету / 16 сообщений из 16, страница 1 из 1
14.05.2018, 13:00
    #39644348
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Привет, друзья
Подкиньте, если не жалко, простенькую функцию для проверки наличия Интернета

Например:
Public function есть_Интернет() as Boolean

end function


Я сам не знаю, что написать
Заранее благодарен
...
Рейтинг: 0 / 0
14.05.2018, 13:10
    #39644356
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function Ping(ByVal ComputerName As String) As Boolean
    ' возвращает TRUE, если пинг прошел
    Dim oPingResult As Variant
    For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _
        ("SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'")
        If IsObject(oPingResult) Then
            If oPingResult.StatusCode = 0 Then
                Ping = True        'Debug.Print "ResponseTime", oPingResult.ResponseTime
                Exit Function
            End If
        End If
    Next
End Function


Пример использования:
Код: vbnet
1.
2.
3.
4.
5.
Sub TestPingFunction()
    If Ping("ComputerName") Then ПутьКПапке = "\\ComputerName\files"
    If Ping("ya.ru") Then MsgBox "Интернет доступен!"
    If Not Ping("192.168.0.2") Then MsgBox "Компьютер с IP адресом 192.168.0.2 недоступен в сети!"
End Sub


Источник .
...
Рейтинг: 0 / 0
14.05.2018, 13:26
    #39644384
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Akina,

Спасибо. Ты меня часто выручал :)
...
Рейтинг: 0 / 0
14.05.2018, 13:29
    #39644387
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
это не даёт полной гарантии, тк протокол ICMP может быть отключен
...
Рейтинг: 0 / 0
14.05.2018, 13:51
    #39644401
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Konst_One , ну так и само понятие "есть Интернет" - тоже весёлое... он всё равно есть, даже когда к нему нет доступа... на Земле, во всяком случае.
...
Рейтинг: 0 / 0
14.05.2018, 14:05
    #39644415
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpSFlags As Long, ByVal dwReserved As Long) As Long

Dim blnInternetConnected as Boolean 
Dim Flags as long

blnInternetConnected = InternetGetConnectedState(Flags, 0&)
...
Рейтинг: 0 / 0
14.05.2018, 14:08
    #39644416
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
вот ещё вариант (проверка доступа к сайту):


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Const FLAG_ICC_FORCE_CONNECTION As Long = &H1
Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
 

    If InternetCheckConnection("http://www.google.com/", FLAG_ICC_FORCE_CONNECTION, 0&) = 0 Then
        MsgBox "Нет интернета!"
    Else
        MsgBox "Есть связь."
    End If
...
Рейтинг: 0 / 0
14.05.2018, 16:25
    #39644520
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Konst_Oneвот ещё вариант (проверка доступа к сайту):


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Const FLAG_ICC_FORCE_CONNECTION As Long = &H1
Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
 

    If InternetCheckConnection("http://www.google.com/", FLAG_ICC_FORCE_CONNECTION, 0&) = 0 Then
        MsgBox "Нет интернета!"
    Else
        MsgBox "Есть связь."
    End If


Ничего не имею против этого способа, единственный недостаток - когда сайт недоступен, реакции приходиться ждать почти 2 минуты (во всяком случае, у меня так себя эта функция ведет). Поэтому использую другой способ, он отрабатывает в той же ситуации мгновенно. (Правда, приходится подключать дополнительную библиотеку)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function conectya() As Boolean
    Dim URL1 As String
    URL1$ = "http://www.ya.ru"
    Dim oHttp1 As WinHttpRequest
    On Error Resume Next: Err.Clear
    Set oHttp1 = New WinHttpRequest
    On Error GoTo 1
     oHttp1.Open "GET", URL1$, True: DoEvents
     oHttp1.Send: DoEvents
     sss = oHttp1.ResponseText
    Set oHttp1 = Nothing
    conectya = True
    Exit Function
1:
    Set oHttp1 = Nothing
    conectya = False
End Function
...
Рейтинг: 0 / 0
14.05.2018, 17:08
    #39644548
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
оО, сколько много вариантов ))
Я проверю все с таймером и найду самый быстрый. Позже отпишусь
...
Рейтинг: 0 / 0
14.05.2018, 18:25
    #39644605
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Проверил...

Возьму, пожалуй, на вооружение вариант с использованием функции InternetGetConnectionState
Он выдаёт моментальный результат.
Предложенная функция conectya выдаёт ложь даже, когда интернет есть (я подключил библиотеку winhttpcom.dll, поскольку winhttp.dll у меня не подключается по какой-то причине)
Остальные функции отлично работают, но я не захотел прописывать в коде ссылки на конкретные сайты гугл или яндекс.

Спасибо вам за ответы.
...
Рейтинг: 0 / 0
14.05.2018, 20:29
    #39644633
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
НастаевПроверил...

Предложенная функция conectya выдаёт ложь даже, когда интернет есть (я подключил библиотеку winhttpcom.dll, поскольку winhttp.dll у меня не подключается по какой-то причине)

Да, моя вина. Захотел функцию "причесать" и выложил не проверив. На самом деле она у меня работает в таком виде (с 2-х секундной принудительной задержкой, или можно задержку еще немного увеличить, если срабатывать не будет)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Public Function conectya() As Boolean
    Dim URL1 As String
    URL1$ = "http://www.ya.ru"
    Dim oHttp1 As WinHttpRequest
'    On Error Resume Next: Err.Clear
    Set oHttp1 = New WinHttpRequest
    On Error GoTo 1
     oHttp1.Open "GET", URL1$, True: DoEvents
     oHttp1.Send: DoEvents
     SleepVB (2)
     Sss1 = oHttp1.ResponseText
    Set oHttp1 = Nothing
    conectya = True
    Exit Function
1:
    Set oHttp1 = Nothing
    conectya = False
End Function
Public Sub SleepVB(Seconds)
  ' ожидание Seconds секунд
  Dim Start
  Start = Timer   ' текущее время в секундах
  Do While Timer < Start + Seconds
    ' обеспечивает параллельное выполнение других процессов
    DoEvents ' обрабатываем
  Loop
End Sub


Почему я в свое время отказался от InternetGetConnectionState. У нас сеть корпоративная, в ней стоит межсетевой экран, через который пользователи получают доступ в интернет. Если межсетевой экран отключен, а компьютер физически подключен к корпоративной сети, то InternetGetConnectionState будет всё равно показывать наличие интернета. Dll-ку подключать как-то по особому не требуется, в стандартном наборе References в VBA редакторе должна присутствовать библиотека Microsoft WinHTTP Services, отмечаете ее галочкой - и всё.
...
Рейтинг: 0 / 0
14.05.2018, 22:46
    #39644676
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
zimkon, я попробовал. Всё работает, как часики. Раз ты говоришь, что это более надёжный вариант, я его и прикручу. Мне важнее надёжность, поскольку я базу данных скомпилирую и отдам на пользование другому лицу.

Ещё раз благодарю.
...
Рейтинг: 0 / 0
15.05.2018, 06:33
    #39644735
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Настаевzimkon, я попробовал. Всё работает, как часики. Раз ты говоришь, что это более надёжный вариант, я его и прикручу. Мне важнее надёжность, поскольку я базу данных скомпилирую и отдам на пользование другому лицу.

Ещё раз благодарю.
Тогда раннее связывание может лучше заменить на позднее, чтобы с подключением библиотеки было меньше хлопот
Код: vbnet
1.
2.
3.
4.
...
    Dim oHttp1 As Object
    Set oHttp1 = CreateObject("WinHttp.WinHttpRequest.5.1")
...
...
Рейтинг: 0 / 0
15.05.2018, 14:55
    #39645041
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Небольшая программка, тестирующая сеть. Написана Paul Marshal на основе API функции InternetGetConnectedState. Переделана под Access
...
Рейтинг: 0 / 0
19.05.2018, 00:07
    #39646961
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
zimkon, спасибо большое
...
Рейтинг: 0 / 0
19.05.2018, 00:11
    #39646962
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить, есть ли подключение к Интернету
Joss, ух ты
не знал, что про соединение можно получить столько инфы. Это пригодится ))
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверить, есть ли подключение к Интернету / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]