2015-11-12 6 views
2

Используя следующий код, с помощью this post, я проверяю, если пользователь работает подключение к Интернету:Проверить наличие подключения к Интернету

Private Declare Function InternetGetConnectedState _ 
    Lib "wininet.dll" (ByRef dwflags As Long, _ 
    ByVal dwReserved As Long) As Long 
Private Const INTERNET_CONNECTION_MODEM As Long = &H1 
Private Const INTERNET_CONNECTION_LAN As Long = &H2 
Private Const INTERNET_CONNECTION_PROXY As Long = &H4 
Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20 
Function IsInternetConnected() As Boolean 
    Dim L As Long 
    Dim R As Long 
    R = InternetGetConnectedState(L, 0&) 
    If R = 0 Then 
     IsInternetConnected = False 
    Else 
     If R <= 4 Then 
      IsInternetConnected = True 
     Else 
      IsInternetConnected = False 
     End If 
    End If 
End Function 

Это возвращает следующую ошибку, которая, кажется, связано с 64-битных систем:

enter image description here

Как я могу адаптировать этот код для обеих систем 32-64 надежным способом?

Возможно, проверка системы пользователей и ответ на google.com?

+1

вам нужно использовать Прекомпиляторы как #if vba7 .... Google Прекомпиляторы объявляющие ptrsafe или что-то, не первенствует в минуту, и не могу полностью вспомнить:) –

+0

@ user5414798 хорошо, спасибо, в любом случае, я посмотрю, что представляют собой прекомпиляторы! –

+1

Прочтите этот https://msdn.microsoft.com/en-us/library/office/ee691831(v=office.14).aspx – Ambie

ответ

0

Добавить PtrSafe в декларации для Win 64 бит:

Private Declare PtrSafe Function InternetGetConnectedState _ 
    Lib "wininet.dll" (ByRef dwflags As Long, _ 
    ByVal dwReserved As Long) As Long 
Смежные вопросы