Страница: 1 |
Страница: 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-сайт:
Профиль | | #1
Добавлено: 24.01.05 15:44
Ждать оно проще легкого, но тогда подвисает программа и вся мордашка...
Но можно сделать псевдо-асинхронность, т.е. режим оставить асинхронный, но в конце - заLoop'ить с DoEvents, до изменения значени какого-то флага... флажок изменяется в callback функции...
ЗЫ
Готового конечно же нет
Номер ответа: 2
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #2
Добавлено: 24.01.05 17:40
Можно и так - почему нет?
о какой АПИшке ты говоришь?
Тогда м.б. дашь просто "наводки"?
Номер ответа: 3
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #3
Добавлено: 24.01.05 17:44
Ага... вроде нашёл примерчик в API Guide на функцию RasDial... ты про неё говорил?
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 25.01.05 00:36
Почти на сайте на этом простенькая звонилка должна быть... мною писана... у самого меня, к сожалению, уже ее нет
Номер ответа: 5
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #5
Добавлено: 25.01.05 16:20
Звонилку твою нашёл... пробую цикл с DoEvents:
dialComplete = False ' << глобальная переменная
Call VBRasDial(hRas, mnuEntryNames(Index).Caption)
While Not dialComplete
DoEvents
Wend
End Sub
а в самом конце callback-функции - следующее:
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-сайт:
Профиль | | #7
Добавлено: 25.01.05 20:51
Использую вот эту функцию в качестве КаллБэка
и смотрю я на вот этот параметр: dwError, дабы перезвонить еще раз...
По события RASCS_Connected - выхожу...
Номер ответа: 8
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #8
Добавлено: 25.01.05 22:43
Спасибо. Аж противно от собственной невнимательности. Ведь при выводе в листбокс - используется VBRASErrorHandler(dwError)!