PDA

View Full Version : مبتدی: کاربر به اینترنت وصل است یا خیر؟!



mst_ab
یک شنبه 15 آذر 1388, 20:04 عصر
سوال بسیار ساده هست ، از چه روشی می تونم بفهمم که آیا کاربر الان به اینترنت وصل هست یا نه - می خوام یه برنامه بنویسم ، که توی اون هر 10 ثانیه این سوال بررسی بشه ، و در صورتی که جواب مثبت بود ، یه کار خاصی انجام بشه مثلاً یه نوشته ای نشون بده .
البته اینم نمی دونم چه طور هر 10 ثانیه یه کار خاصی رو تکرار کنم ، اگر میشه اینم جواب بدید.
ممنون.

Mani_rf
یک شنبه 15 آذر 1388, 20:50 عصر
بد نبود که قبل از ایجاد تاپیک در سایت جستجو می کردید.
برای انجام این کار از این کد می توانید استفاده نمایید :


If My.Computer.Network.IsAvailable Then
Msgbox("Connected to network")
else
Msgbox("Not Connected to network")
end if


برای چک کردن در زمان مشخص نیز از کنترلر Timer استفاده نمایید و خاصیت Interval آن را برابر با 10000 قرار دهید.

mst_ab
یک شنبه 15 آذر 1388, 23:22 عصر
نمی دونم چرا این
My.Computer.Network.IsAvailable
همیشه True هست ، چون چه وصل باشم چه نباشم ، دستور اجرا میشه ، در ضمن با
My.Computer.Network.pingهم تست کردم ، ارور میده. برای تایمر ممنون، جواب داد.

bastakboys
دوشنبه 16 آذر 1388, 05:34 صبح
من با کمک این ماژول و ... تونستم یک فی+-لت-+ر----- شک-+ن بنویسم


Module Detect
Public s_r, m_r, h_r As Int16
Public constr As String
'Dim form1 As New Form1
' function 4 check internet connection API
Public Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpSFlags As Int32, ByVal dwReserved As Int32) As Boolean
Enum InetConnState
modem = &H1
lan = &H2
proxy = &H4
ras = &H10
offline = &H20
configured = &H40
End Enum
#Region "Check Connection Type"
Function chk_internet() As String
Dim lngFlags As Long
If InternetGetConnectedState(lngFlags, 0) Then
' True
If lngFlags And InetConnState.lan Then
constr = "ارتباط به وسیله لن"
ElseIf lngFlags And InetConnState.modem Then
constr = "ارتباط به وسیله مودم به اینترنت"
ElseIf lngFlags And InetConnState.proxy Then
constr = "استفاده از پروکسی سرور"
ElseIf lngFlags And InetConnState.ras Then
constr = "Connected With RAS"
ElseIf lngFlags And InetConnState.offline Then
constr = " ارتباط قطع است"
End If
Else
' False
constr = "Off Line"
End If
Return (constr)
End Function
#End Region
#Region "Show Time Elapsed Of Connecting "
Function t_rm() As String
If s_r = 59 Then
m_r += 1 : s_r = 1
ElseIf m_r = 59 Then
m_r = 0 : h_r += 1
Else : s_r += 1
End If
Return (h_r & " : " & m_r & " : " & s_r).ToString
End Function
#End Region

End Module

Cybersilent
دوشنبه 16 آذر 1388, 06:48 صبح
سلام خدمت اساتید محترم
فکر کنم این پست تا حدود زیادی بهت کمک کنه
http://www.barnamenevis.org/forum/showthread.php?t=184484

Navid Asadi
دوشنبه 16 آذر 1388, 16:59 عصر
سلام
فکر کنم علت true بودنش اینه که شما مودم تون رو به کارت شبکه وصل کردید( یا به هر شبکه ی دیگه ای متصل هستید) اگه مودم رو خاموش کنید درست میشه....

mst_ab
دوشنبه 16 آذر 1388, 19:19 عصر
سلام
فکر کنم علت true بودنش اینه که شما مودم تون رو به کارت شبکه وصل کردید( یا به هر شبکه ی دیگه ای متصل هستید) اگه مودم رو خاموش کنید درست میشه....
بله ، چون بنده ای دی اس ال دارم ، نمیشه قطعش کنم ، یعنی می خوام هم توی سیستم هایی که ای دی اس ال دارن جواب بده و هم توی سیستم هایی که از دیال آپ استفاده می کنن، این نرم افزار به این صورت هست که هر 10 ثانیه چک میکنه کاربر به اینترنت وصل هست یا نه در صورتی که وصل بود ، یه تبلیغی رو به کاربر از اینترنت نشون میده ، مشکل همین جاست که فقط در صورتی که واقعاً به اینترنت وصل بود اون تبلیغ نشون داده بشه ، مثلاً اگر کارت شبکش فقط وصل بود ( و هنوز به اینترنت وصل نشده بود ) هم نشون نده.

Hossis
دوشنبه 16 آذر 1388, 21:04 عصر
این کد رو هم تست بکن
من اونو استفاده کردم



Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias _
"RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, _
lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias _
"RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Const RAS95_MaxEntryName = 256
Const RAS95_MaxDeviceType = 16
Const RAS95_MaxDeviceName = 32
Dim TimeOut As Byte
Private Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

'Function for RegWrite
Private Function RegWrite(Key1, SValue As String)
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite Key1, SValue
End Function

Public Function IsConnected() As Boolean
On Error Resume Next
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95

TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize

RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)

If RetVal <> 0 Then
' MsgBox "ERROR"
Exit Function
End If

Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)

If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If

End Function

bastakboys
سه شنبه 17 آذر 1388, 05:44 صبح
آقا اون ماژولی که من گذاشتم تمام مشکلت رو حل می کنه و می تونه هر نوع اتصال را شناسایی بکنه یک نگاه بنداز