Собственно есть задача: сделать звонилку с отображением статуса соединения с интернетом(ONOFF) как сделать дозвон ясно: ModemDial. А как получить состояние соединения?
Задача очень важна, но самостоятельно её выполнить мне не удалось. Прошу помощь.
Этот топик читают: Гость
Ответов: 1088
Рейтинг: 112
|
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
вот такой способ имеется
|
|||
карма: 27 |
|
Ответов: 1088
Рейтинг: 112
|
|||
Спасибо!!
пока что не работает. Видимо, нужен ras.pas а не RASUnit.pas... через пару часов проверю это... --------------------- Чет не получается. При вызове этой процедуры программа падает с ошибкой рунтайм 216. Cхема: |
|||
карма: 0 |
| ||
файлы: 1 | ras.zip [1000B] [94] |
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
расставь _debug() через каждую строчку и посмотри где именно вылетает
|
|||
карма: 27 |
| ||
Голосовали: | Sniper36 |
Ответов: 1088
Рейтинг: 112
|
|||
На conns^.dwSize := sizeof(TRasConn);
если закоментить GetMem(conns, bufsize); то на RasGetConnectStatus(conns^.hrasconn, status); если эту строку закоментить то больше ошибок нет |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Количество активных соединений нельзя так определять. Нужно просто достаточно большой буфер передавать.
Скорее всего первый RasEnumConnections вернул ошибку, и bufsize остался равным нулю, на что обиделся GetMem. |
|||
карма: 1 |
| ||
Голосовали: | Sniper36 |
Ответов: 1088
Рейтинг: 112
|
|||
Избавился от рунтайм. Новая проблема: следующая схема не тянет более 1 активного соединения, если их больше то
conns^.szEntryName conns^.szDeviceType status.rasconnstate выдают полную чушь, status.dwError выдает 1 Решается увеличением буфера. Я увеличил с 512 до 2048 пока все нормально Спасибо Dilma и tsdima!! |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Sniper36, ну если это работает и кроме того является решением задачи, то можно вставить и в дистрибутив. Так что ждем оформленный код.
|
|||
карма: 27 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Sniper36 писал(а): Я увеличил с 512 до 2048 пока все нормальноПока пятое соединение не появится |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
а почему приведенный способ получения коннектов не работает?
|
|||
карма: 27 |
|
Ответов: 1088
Рейтинг: 112
|
|||
tsdima писал(а): Пока пятое соединение не появится У меня их максимум 4, а активно обычно 0-2 Dilma писал(а): ну если это работает и кроме того является решением задачи, то можно вставить и в дистрибутив. Так что ждем оформленный код.Есть только одно НО: данный код может выдать только активные соединения, в своей схеме я использую её совместно с ModemDial(чтобы перечислить все соединения). Если текущее положение достаточно то могу и оформить...Жду ответ. Dilma писал(а): что содержат bufsize и ConnCount после вызова процедуры?------------ Дoбавленo: После GetMem(conns, bufsize); bufsize равен 0, далее рунтайм... далее до RasGetConnectStatus(conns^.hrasconn, status); остается 0 ConnCount содержит 4208501 актуально для любого количестве подключений |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Dilma писал(а): а почему приведенный способ получения коннектов не работает?А потому-что в MSDN не сказано, что так можно делать |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-04 04:41:32 |
|||
карма: 0 |
|
13