Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Dial-up из-под VB Добавлено: 24.01.05 14:12  

Автор вопроса:  Comanche
Нужна следующая функция (работающая под Win9x/2000/XP):

1. Определить дефолтовое соединение с Инетом.
2. Если пароль там сохранён - сразу начать соединяться; иначе - показать стандартное окошко соединения и ждать действий юзера. При нажатии юзером кнопки "Отмена" - вернуть False; то же - при ошибках набора.
3. (самое важное) ДОЖДАТЬСЯ успешной установки соединения, после чего вернуть True; при неудаче - попробовать N раз дозвониться, и если опять неудача - то вернуть False.

Аргументы функции - число попыток дозвона (N) и интервал между ними (в сек.). Как видно из описания, нужно уйти от асинхронности дозвона: нужно ЖДАТЬ!

М.б. у кого есть готовое решение? а то в лом писАть самому - сижу на выделенке, даже проверить дозвон никак не смогу :((

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 24.01.05 15:44
Ждать оно проще легкого, но тогда подвисает программа и вся мордашка...
Но можно сделать псевдо-асинхронность, т.е. режим оставить асинхронный, но в конце - заLoop'ить с DoEvents, до изменения значени какого-то флага... флажок изменяется в callback функции...

ЗЫ
Готового конечно же нет :)

Ответить

Номер ответа: 2
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #2 Добавлено: 24.01.05 17:40
Можно и так - почему нет?

флажок изменяется в callback функции...

о какой АПИшке ты говоришь?

Готового конечно же нет

Тогда м.б. дашь просто "наводки"?

Ответить

Номер ответа: 3
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #3 Добавлено: 24.01.05 17:44
Ага... вроде нашёл примерчик в API Guide на функцию RasDial... ты про неё говорил?

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 25.01.05 00:36
Почти :) на сайте на этом простенькая звонилка должна быть... мною писана... у самого меня, к сожалению, уже ее нет :(

Ответить

Номер ответа: 5
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #5 Добавлено: 25.01.05 16:20
Звонилку твою нашёл... пробую цикл с DoEvents:
Private Sub mnuEntryNames_Click(Index As Integer)
    dialComplete = False ' << глобальная переменная
    Call VBRasDial(hRas, mnuEntryNames(Index).Caption)
    While Not dialComplete
        DoEvents
    Wend
End Sub


а в самом конце callback-функции - следующее:
If RascOnState = RASCS_Connected Or RascOnState = RASCS_Disconnected Then
    dialComplete = True
Else
    dialComplete = False
End If


Однако, если дозвон производится с неверным паролем, то последней "стадией" (последним значением RascOnState) является RASCS_AuthNotify, после чего линия обрывается провайдером и до "RascOnState = RASCS_Disconnected" дело даже не доходит!

Непонятно, как тогда можно отловить такую ситуацию :(( если этого не сделать - цикл будет вечным...

Ответить

Номер ответа: 6
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #6 Добавлено: 25.01.05 16:24
Да, и ещё: ситуацию "RascOnState = RASCS_AuthNotify" нельзя, конечно же, считать признаком окончания дозвона - оно случается и при успешной авторизации в том числе. Собсс-с-сно, из-за этого и трабл.

Скачал тут ещё пресловутый "TE-PlatformVB.chm" - попробую его поковырять, может найду ответ...

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 25.01.05 20:51
Использую вот эту функцию в качестве КаллБэка
Private Sub VBRasDialProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal RasConnState As Long, ByVal dwError As Long)


и смотрю я на вот этот параметр: dwError, дабы перезвонить еще раз...

По события RASCS_Connected - выхожу...

Ответить

Номер ответа: 8
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #8 Добавлено: 25.01.05 22:43
Спасибо. Аж противно от собственной невнимательности. Ведь при выводе в листбокс - используется VBRASErrorHandler(dwError)!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам