powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверить, есть ли подключение к Интернету
16 сообщений из 16, страница 1 из 1
Проверить, есть ли подключение к Интернету
    #39644348
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, друзья
Подкиньте, если не жалко, простенькую функцию для проверки наличия Интернета

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

end function


Я сам не знаю, что написать
Заранее благодарен
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #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
Проверить, есть ли подключение к Интернету
    #39644384
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо. Ты меня часто выручал :)
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #39644387
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не даёт полной гарантии, тк протокол ICMP может быть отключен
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #39644401
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One , ну так и само понятие "есть Интернет" - тоже весёлое... он всё равно есть, даже когда к нему нет доступа... на Земле, во всяком случае.
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #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
Проверить, есть ли подключение к Интернету
    #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
Проверить, есть ли подключение к Интернету
    #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
Проверить, есть ли подключение к Интернету
    #39644548
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оО, сколько много вариантов ))
Я проверю все с таймером и найду самый быстрый. Позже отпишусь
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #39644605
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил...

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

Спасибо вам за ответы.
...
Рейтинг: 0 / 0
Проверить, есть ли подключение к Интернету
    #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
Проверить, есть ли подключение к Интернету
    #39644676
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon, я попробовал. Всё работает, как часики. Раз ты говоришь, что это более надёжный вариант, я его и прикручу. Мне важнее надёжность, поскольку я базу данных скомпилирую и отдам на пользование другому лицу.

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

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


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