Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Как програмно узнать есть ли коннект с интернетом.?   Найти похожие ветки 

 
Officeman   (2006-02-04 13:17) [0]

Написал программу. Теперь надо чтоб при запуске программа открывала
URL адрес. но с учётом проверки соединения с интернет. т.е. если соединения есть или такой адрес найден(есть ответ), тогда открываем окно броузера. иначе не открываем.

нашёл похожую тему
http://delphimaster.net/view/6-1138956468/
но практически ничего не понял.

Объясните как сделать проще. Пожалуйста.


 
Anatoly Podgoretsky ©   (2006-02-04 13:21) [1]

Что такое соединение с Интернет и зачем оно тебе нужно?
Просто запрашивай ресурс и обрабатывай ошибку.


 
Officeman   (2006-02-04 13:31) [2]

после запуска программы, открывается окно броузера в котором загружается
html(или другая) страничка  с  баннерами. в слущае если такой адрес найден.

>Просто запрашивай ресурс и обрабатывай ошибку.
Это можно сделать если будет использоватся компонент TWebBrowser?
или это можно сделать без использованяи компонента?

я открываю ссылки так обычно.
ShellExecute(0, "", "http://......", "", "", SW_SHOW);
каким образом можно сделать обработку проверки. если адрес не найден?

программой будет пользоватся примерно 100 разных человек ежедневно.
Хочу чтоб прога пользу приносила.


 
DrPass ©   (2006-02-04 13:35) [3]

Проверить связь можно обычным пингом, например, с помощью компоненты IdICMP


 
Officeman   (2006-02-04 14:03) [4]

в  IdICMPClient  надо задавать HOST  в виде IP адреса.
как узнать IP адрес =)) например адрес такой   http://stalkerz.info


 
Officeman   (2006-02-04 14:11) [5]

=)) ступил. уже разобрался с IP =))


 
Officeman   (2006-02-04 14:17) [6]

нашёл пример работы компоненты    IdICMPClient

вот он.:  помылаешь адрес хоста. и пингуешь. получаешь в Memo результаты каждый интервал 1000.



unit Main;

interface

uses
 {$IFDEF Linux}
 QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls,
 {$ELSE}
 windows, messages, graphics, controls, forms, dialogs, stdctrls, extctrls,
 {$ENDIF}
 SysUtils, Classes, IdIcmpClient, IdBaseComponent, IdComponent, IdRawBase, IdRawClient;

type
 TfrmPing = class(TForm)
 lstReplies: TListBox;
 ICMP: TIdIcmpClient;
 Panel1: TPanel;
 btnPing: TButton;
 edtHost: TEdit;
 procedure btnPingClick(Sender: TObject);
 procedure ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
 private
 public
 end;

var
 frmPing: TfrmPing;

implementation
{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False; try
 ICMP.Host := edtHost.Text;
 for i := 1 to 4 do begin
 ICMP.Ping;
 Application.ProcessMessages;
 //Sleep(1000);
 end;
 finally btnPing.Enabled := True; end;
end;

procedure TfrmPing.ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
var
 sTime: string;
begin
 // TODO: check for error on ping reply (ReplyStatus.MsgType?)
 if (ReplyStatus.MsRoundTripTime = 0) then
 sTime := "<1"
 else
 sTime := "=";

 lstReplies.Items.Add(Format("%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms",
 [ReplyStatus.BytesReceived,
 ReplyStatus.FromIpAddress,
 ReplyStatus.SequenceId,
 ReplyStatus.TimeToLive,
 sTime,
 ReplyStatus.MsRoundTripTime]));
end;



=) немогу сообразить.
когда при работе программы ХОСТИНГ не обнаруживается. программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.


 
Gero ©   (2006-02-04 14:25) [7]

> я открываю ссылки так обычно.
> ShellExecute(0, "", "http://......", "", "", SW_SHOW);
> каким образом можно сделать обработку проверки. если адрес
> не найден?

В общем случае никаким.


 
Gero ©   (2006-02-04 14:26) [8]

> программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.

try
except


 
Officeman   (2006-02-04 14:43) [9]

напиши кусок кода как ты себе это представляешь! там много событий немогу понять какие относятся к этой ошибке. ошибка типа

# Socet Error 11004


 
Gero ©   (2006-02-04 14:50) [10]

> там много событий немогу понять какие относятся к этой ошибке

ICMP.Ping;


 
Officeman   (2006-02-04 15:11) [11]

в коде примера не сказано как отловить ошибку когда не пингуется адрес
=((  если кто знает привидите пример пожалуйста.


 
Officeman   (2006-02-04 19:04) [12]

никто не знает или вопрос не ясен? подскажите кто знает. плиз плиз плиз...


 
HITMAN ©   (2006-02-04 20:11) [13]

function TForm1.IsConnectedToInternet: Boolean;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;


буттон1.клик

  if IsConnectedToInternet then
   begin
    Timer1.Enabled:=false;
    StartMessageLoad();
   end;


 
Officeman   (2006-02-04 20:30) [14]

to HITMAN, большое - человеческое спасибо!!


 
HITMAN ©   (2006-02-04 21:58) [15]

implementation

uses WinInet;

{$R *.dfm}


помойму ещё надо вставить WinInet

или поищи нужное тут:
(это пример с моего проэкта, поэтому толком непомню)

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
 IdMessageClient, IdSMTP, StdCtrls, idMessage, ComCtrls, ExtCtrls, XPMan,
 Buttons, ImgList, Gauges, IdPOP3, SHELLAPI, Menus, ActiveX, MSHTML,
 OleCtrls, SHDocVw, FileCtrl;


 
Officeman   (2006-02-05 02:56) [16]

я сразу разобрался.  спасибо за помощь. модуль отлично работает. =)

p.s. я не чайник. просто немного рассеяный.

тут анекдот вспомнил:

Купил книгу "С++ для чайников", оказалось что надо ещё купить "С++ для идиотов."

=)))))))))))))



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
15-1138270203
Тульский
2006-01-26 13:10
2006.02.19
новый сервис Delphimaster?


2-1138911454
MIXER
2006-02-02 23:17
2006.02.19
Edit и КОмпания


1-1136990344
DelphiLexx
2006-01-11 17:39
2006.02.19
Сохранить рисунок с TPanel


2-1139040100
Julia
2006-02-04 11:01
2006.02.19
Ошибка на Locate


2-1138686124
Mike48
2006-01-31 08:42
2006.02.19
315-й вопрос про ehlib