| чтобы все заработало запускайте файл autoTln.exe После долгих и кровопролитных... в файле doit.rpc изменил строку "s reboot" на "s set wan adsl reset". Это работает для Planet ADE-4400. И более изящно, чем reboot. 15. модель - Westell 6100 provider -Verizon DSL соединение USB/LAN (эмуляция) "RouterControl" не поддерживает мой Westell 6100. Никакие советы dimonius faq не прокатывали. Поэтому пришлось идти своим путем 1. в MS DoS окне прогони магические строки ipconfig /flaushdns /release /renew 2. после /renew посмoтри, что у тебя стоит на Default Gateway - у меня 192.168.1.1 3. набери в любом браузере http://192.168.1.1 (твой Default Gateway) - выйдешь на Web Interface. Там будет кнопка "Disconnect", после нажатия ждешь n- минут, после чего жмешь "Connect". Любопытно, что при физическом отключении модема для смены IP требовалось ~5 min, а при этом nul вызывается в ютом случае ПОСЛЕ, а НЕ ВО ВРЕМЯ процесса и, собственно, код (выкладывать .exe не могу - на это есть причины). Естественно, что нужна VB6 run-time library. Если есть вопросы по коду - пиши Проверка внешнего IP и смена dynamic IP для модема Westell 6100 Internet APIs, regular expressions, Router Web interface, WebBrowser Control Код использует wininet.dll APIs regular expressions для проверки Public IP. В случае, если один из "What is my IP" сайтов отключен, программа пытается достучаться до следующего. В случае, если wininet.dll API возвращает ошибку, программа преобразует код ошибки в текст. WebBrowser control используется для имитации нажима клавиш "disconnect/reconnect" пользователем. После нажатия клавиши программа ждет, пока не получит ответ на event DocumentComplete, а затем пока статус Web документа не становится "complete". Время на запрос изменения IP получено экспвриментально. Замечено, что иногда модем реконнектится "сам по себе", не получив новый IP. В связи с этим в процессе ожидания вводена дополнительная проверка на статус в документе (innertext). Программа может быть вызвана из .bat файла. Комманда start /wait (в окне MS DOS) висит и ожидает завершония процесса. Код: In project references: Microsoft HTML Object Library - C:\winnt\system32\mshtml.tlb MIcrosoft VB Script Regular expressions 5.5 - C:\winnt\system32\vbscript.dll\3 On form - WebBrowser Control name - brwProxy Code in module: Option Explicit Public Sub Main() frmRouter.Show frmRouter.ChangeIP Unload frmRouter End Sub code in form: Option Explicit Dim bStatus As Boolean Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' don't write this item to the cache Private Const INTERNET_FLAG_RELOAD = &H80000000 Private Const INTERNET_FLAG_PRAGMA_NOCACHE = &H100 Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0 Private Const SCUSERAGENT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _ (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _ ByVal sProxyBypass As String, ByVal lFlags As Long) As Long Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _ (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, _ ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, _ ByVal lpBuffer As String, ByVal dwNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long) _ As Boolean Private Declare Function InternetCloseHandle Lib "wininet.dll" _ (ByVal hInet As Long) As Integer Private Sub brwProxy_DocumentComplete(ByVal pDisp As Object, URL As Variant) bStatus = True End Sub Private Sub WaitForBrowser(Link As String) '2 - navNoHistory bStatus = False brwProxy.Navigate2 Link, 2 Do While bStatus = False DoEvents Loop Do While brwProxy.Document.ReadyState <> "complete" DoEvents Loop End Sub Private Sub WaitForModemStatus(Status As Integer, HTMLDocFR As HTMLDocument) 'Disconnect - 2 'connect - 1 bStatus = False HTMLDocFR.PPPAction.PPPRequest.Value = Status HTMLDocFR.PPPAction.currentCnIndex.Value = 0 HTMLDocFR.PPPAction.submit Do While bStatus = False DoEvents Loop Do While brwProxy.Document.ReadyState <> "complete" DoEvents Loop End Sub Private Sub WaitInterval(Seconds As Integer, _ Release As Boolean, HTMLDocFR As HTMLDocument, CheckConnect As Boolean) Dim Date1 As Date Dim DateTemp As Date Dim intDiff As Integer Date1 = Now DateTemp = DateAdd("s", Seconds, Date1) Do While Now < DateTemp DoEvents intDiff = DateDiff("s", Now, DateTemp) If CheckConnect Then If intDiff < Seconds And intDiff Mod 10 = 0 Then If VerifyDisconnect(HTMLDocFR) Then Exit Do End If End If End If Loop End Sub Public Sub ChangeIP() Dim strTemp As String Dim HTMLDocFR As MSHTML.HTMLDocument Dim HTMLDoc As MSHTML.HTMLDocument Dim strOldIP As String Dim strNewIP As String
Я не Бог и мне всё по х..
|