Вопрос № 160344: Здравствуйте! Нужен код простейшей программы автодозвона. Программа должна находится в трее и периодически контролировать соединение с интернетом, текущее время и если время находится в промежутке например с 1 до 3 часов, то восстанавливать с...
Вопрос № 160.344
Здравствуйте! Нужен код простейшей программы автодозвона. Программа должна находится в трее и периодически контролировать соединение с интернетом, текущее время и если время находится в промежутке например с 1 до 3 часов, то восстанавливать соединение при обрыве, а если с 3 до 5 то соединение восстанавливать не обязательно. Внимание, вопрос! Как контролировать соединение, есть оно в данный момент или разорвано. На словах объяснять не надо, нужны 10 строчек кода.
Отправлен: 12.02.2009, 23:20
Вопрос задал: Berkut55 (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Genia007
Здравствуйте, Berkut55! Проверить есть ли активное соединение с Интернетом можно следующим образом
Код:
uses WinInet;
{...}
function IsConnectedToInternet: Boolean; var dwConnectionTypes: DWORD; begin dwConnectionTypes := INTERNET_CONNECTION_MODEM
+ INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY; Result := InternetGetConnectedState(@dwConnectionTypes, 0); end;
procedure TForm1.Button1Click(Sender: TObject); begin if IsConnectedToInternet then ShowMessage('Есть соединение.') else ShowMessage('Нет соединения.') end;
Дозвониться до провайдера можно попробовать так:
Код:
function DialProvider(connection: string): boolean; // connection - имя учетной записи var pars: TRasDialParams; hRas: ThrasConn; r: integer; begin hRas := 0; strpcopy(pars.szEntryName, connection); // имя учетной записи pars.szPhoneNumber := ''; // номеp телефона
- по умолчанию pars.szcallbacknumber := ''; // callback нам не нужен pars.szUserName := ''; // логин - по умолчанию pars.szPassWord := ''; // паpоль - по умолчанию pars.szDomain := ''; // аналогично с домейном pars.dwSize := Sizeof(TRasDialParams); // вычисляем pазмеp записи r := rasdial(nil, nil, pars, 0, nil, hRas); // звоним if r <> 0 then begin // если что-то неполучилось, то rasH
angUp(hRas); // сбpасываем соединение result := false; // ф-ция тепеpь веpнет false end else result := true; // а если все ок - то true. end;
Использовались статьи с сайта Delphi World.
--------- Помогли тебе, помоги и ты.
Ответ отправил: Genia007 (статус: Студент)
Ответ отправлен: 15.02.2009, 12:04
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 243668 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Изчерпывающий ответ! Спасибо!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.