Вопрос № 181464: Здравствуйте, уважаемые эксперты! Обращаюсь к вам с такой вот просьбой. Напишите мне программу(с наглядным интерфейсом(простым)) на Delphi 7 которая выполняет следующую функцию: программа проверяет наличие активного соединения с интернет...
Вопрос № 181464:
Здравствуйте, уважаемые эксперты!
Обращаюсь к вам с такой вот просьбой. Напишите мне программу(с наглядным интерфейсом(простым)) на Delphi 7 которая выполняет следующую функцию: программа проверяет наличие активного соединения с интернетом и если оно не активно, то программа включает интернет.
Ситуация такая. У меня интернет. Стандартные провода от хаба. Но он непостоянен....тоисть он может если я включаю utorrent выключиться или поработать какое то время и снова выключиться. Постоянно
передключаться не хочется(НАДОЕЛО)....Хочется чтобы за меня это делала программа. Сам лично не имею представления какие проверки писать и какие функции/процедуры использовать. Стандартная функция не работает(переподключения при разрыве связи) почему то.
Кратко о системе: Win Vista Home Premium 32разрядная
Оформите ответ как архив с программой в которой есть исходники для самостоятельного разбора и возможной модернизации.
Заранее спасибо.
Е
ще буду признателен если натолкнете на литературу для подобных программ. Я так думаю тут все через модуль WINApi
Отвечает Евгений/Genia007/ (Профессионал) :
Здравствуйте, Юдин Евгений Сергеевич! Могу предложить свой вариант решения. Для подключения к интернету использую консольную команду rasdial: выполняет автоматический набор номера для клиентов Microsoft. Команда rasdial, запущенная без параметров, показывает состояние текущих подключений. Синтаксис
rasdial
[имя_подключения] /disconnect Параметры имя_подключения Требуется при подключении к записи телефонной книги (.pbk). Задает запись текущего файла .pbk из корневой_папки_системы\System32\Ras. Если имя_подключения содержит пробелы, его следует заключать в кавычки (т. е. "имя_подключения").
Файл Rasphone.pbk используется по умолчанию, если не задана Личная_телефонная_книга. Если она задана, используется файл имя_пользователя.pbk. Имя выводится
в заголовке окна Rasphone при задании личной телефонной книги. В случае конфликта имен происходит добавление цифр. имя_пользователя [{пароль|*}] Задает имя пользователя и пароль для подключения. Если используется символ звездочки, пользователю выдается запрос на ввод пароля, но вводимые символы не отображаются. /domain:домен Задает домен, в котором находится учетная запись пользователя. Если этот параметр отсутствует, используется последнее значение поля Домен диалогового окна Подключение к. /phone:номер_телефона
Заменяет номер телефона, заданный для телефонного номера данной записи в файле телефонной книги Rasphone.pbk. /callback:номер_для_ответного вызова Заменяет номер телефона для ответного вызова, заданный для записи из файла телефонной книги Rasphone.pbk. /phonebook:путь_к_телефонной_книге Задает путь к файлу телефонной книги. По умолчанию задан системный_корневой_каталог\System32\Ras\имя_пользователя.pbk. Можно указать полный путь к файлу. /prefixsuffix Применяет к
набираемому номеру телефона параметры набора номера TAPI для текущего местоположения. Эти параметры настраиваются в телефонной службе с помощью компонента "Параметры телефона и модема", находящегося на панели управления. По умолчанию этот параметр отключен. /disconnect Данный параметр требуется при отключении. Отключает заданное подключение. Отключение также выполняется с помощью ввода параметра /d.
Примечания
* Команда rasdial не поддерживает следующие функции Rasphone.exe:
- Записи, требующие ввода данных в терминальном режиме в процессе набора номера. - Набор номера через оператора или вручную.
Для определения подключения к интернету функцию InternetGetConnectedState: содержится в wininet.dll (IE4 / IE5) и показывает состояние подключения к сети локальной системы. Она довольно проста в использовании и возвращает TRUE, если присутствует соединение с интернетом, иначе FALSE.
Так же функция содержит пара
метр dwFlags. После вызова функции, dwFlags содержит состояние текущего соединения.
А для пинга функцию InternetCheckConnection: функция попытается определить доступность сервера, определяемого из URL, который послан функции в качестве параметра, с помощью пинга. Если в вызове функции был установлен флаг $00000001, а в качестве URL был послан NULL, функция проверит не имеется ли входа в серверную базу данных ближайшего сервера. Если такой сервер существует, то функция выполнит пинг этого сервера.
procedure TForm1.Timer1Timer(Sender: TObject); // Проверяем доступность Интернета var flag: DWORD; begin // Проверяем подключен ли Интернет и дополнительно для подстраховки пинингуем любой сайт, например http://rfpro.ru if (not InternetGetConnectedState(@flag, 0)) Or (not InternetCheckConnection(PChar(Sa
it.Text), $00000001, 0)) then begin Timer1.Enabled:= false; Button1.Click; Form1.Caption:= 'Интернет не подключен, подключаюсь'; end else Form1.Caption:= 'Интернет подключен'; end;
procedure TForm1.Button3Click(Sender: TObject); // Запускаем или тормозим мониторинг доступности Интернета begin If Timer1.Enabled then Timer1.Enabled:= false else begin Timer1.Enabled:= true; Timer1.OnTimer(Timer1);
end; end;
end.
, а весь проект в приложении. В поле имя соединения записываем имя своего соединения, которое можно посмотреть если навести курсор на значок в трее, в поле имя пользователя вносим логин для соединения и в поле пароль впечатываем пароль для входа в интернет. Если подключение одно и не требуется постоянно менять пользователя и пароль, то удобнее внести эти данные на этапе разработке программы до компиля
ции.
Прикрепленный файл:загрузить »
----- Помогли тебе, помоги и ты.
Ответ отправил: Евгений/Genia007/ (Профессионал)
Ответ отправлен: 20.12.2010, 17:43
Номер ответа: 264934
Оценка ответа: 5 Комментарий к оценке: Отличная работа! 5 баллов!
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 264934
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.