Visual Basic - Трюки и Хитрости,
советы и ответы на вопросы.
Продолжает поступать информация о нашем с вами будущем инструменте - VB7
Статья о новых возможностях
"Visual Basic 7 - Все же революция!"
сегодня опубликована у меня:
http://vbrussian.com/vb7_2.html
Заходите - вы будете первыми, так как ссылка появитсяв новостях сайта
только завтра!
А теперь советы - меня спрашивают довольно часто
Как разорвать соединение с Интернетом.
====================== начало кода ==================================
Как разорвать соединение с Интернетом.
Const RAS_MAXENTRYNAME = 256
Const RAS_MAXDEVICETYPE = 16
Const RAS_MAXDEVICENAME = 128
Const RAS_RASCONNSIZE = 412
Private Type RasEntryName
dwSize As Long
szEntryName(RAS_MAXENTRYNAME) As Byte
End Type
Private Type RasConn
dwSize As Long
hRasConn As Long
szEntryName(RAS_MAXENTRYNAME) As Byte
szDeviceType(RAS_MAXDEVICETYPE) As Byte
szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type
Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias
"RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long,
lpcConnections As Long) As Long
Private Declare Function RasHangUp Lib "rasapi32.dll" _
Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Sub HangUp()
Dim i As Long
Dim lpRasConn(255) As RasConn
Dim lpcb As Long
Dim lpcConnections As Long
Dim hRasConn As Long
lpRasConn(0).dwSize = RAS_RASCONNSIZE
lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
lpcConnections = 0
ReturnCode = RasEnumConnections(lpRasConn(0), lpcb, lpcConnections)
If ReturnCode = ERROR_SUCCESS Then
For i = 0 To lpcConnections - 1
If Trim(CStr(lpRasConn(i).szEntryName)) = Trim(gstrispname) Then
hRasConn = lpRasConn(i).hRasConn
ReturnCode = RasHangUp(ByVal hRasConn)
End If
Next i
End If
End Sub
====================== конец кода ==================================
Установить соединение значительно проще:
====================== начало кода =================================
Dim ret
ret = Shell("rundll32.exe rnaui.dll,RnaDial " _
& "connection_name", 1)
====================== конец кода ==================================
Естественно, вы должны знать имя dialup соединения.
Как проверить, установлено ли соединение с Инетом? Это чуть более сложно,
к тому же, такой пример уже был опубликован на моем сайте.
Так что даю прямой линк - http://www.vbrussian.com/Files/IsConnect3.zip
Ну и из общеобразовательного:
Как заставить компьютер переждать паузу в выполнении кода
Да, я знаю про SLEEP из API , но эта функция замораживает весь поток,
что не есть хорошо
====================== начало кода =================================
Public Sub Sleep(NumberOfSecond As Double)
Dim FinishTime As Date
FinishTime = DateAdd("s", NumberOfSecond, Now)
Do Until FinishTime < Now
DoEvents
Text1 = Time
Loop
End Sub
====================== конец кода ==================================