![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как програмно узнать есть ли коннект с интернетом.? [D6, 2000, XP]
Officeman © (2006-02-04 13:17:00)Написал программу. Теперь надо чтоб при запуске программа открывала
URL адрес. но с учётом проверки соединения с интернет. т.е. если соединения есть или такой адрес найден(есть ответ), тогда открываем окно броузера. иначе не открываем.
нашёл похожую тему
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1138956468&n=4
но практически ничего не понял.
Объясните как сделать проще. Пожалуйста.
Officeman (2006-02-05 02:56:00) [1]я сразу разобрался. спасибо за помощь. модуль отлично работает. =)
p.s. я не чайник. просто немного рассеяный.
тут анекдот вспомнил:
Купил книгу "С++ для чайников", оказалось что надо ещё купить "С++ для идиотов."
=)))))))))))))
HITMAN (2006-02-04 21:58:00) [2]
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-04 20:30:00) [3]to HITMAN, большое - человеческое спасибо!!
HITMAN (2006-02-04 20:11:00) [4]
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 19:04:00) [5]никто не знает или вопрос не ясен? подскажите кто знает. плиз плиз плиз...
Officeman (2006-02-04 15:11:00) [6]в коде примера не сказано как отловить ошибку когда не пингуется адрес
=(( если кто знает привидите пример пожалуйста.
Gero (2006-02-04 14:50:00) [7]> там много событий немогу понять какие относятся к этой ошибке
ICMP.Ping;
Officeman (2006-02-04 14:43:00) [8]напиши кусок кода как ты себе это представляешь! там много событий немогу понять какие относятся к этой ошибке. ошибка типа
# Socet Error 11004
Gero (2006-02-04 14:26:00) [9]> программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.
try
except
Gero (2006-02-04 14:25:00) [10]> я открываю ссылки так обычно.
> ShellExecute(0, '', ' http://......', '', '', SW_SHOW);
> каким образом можно сделать обработку проверки. если адрес
> не найден?
В общем случае никаким.
Officeman (2006-02-04 14:17:00) [11]нашёл пример работы компоненты 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;
=) немогу сообразить.
когда при работе программы ХОСТИНГ не обнаруживается. программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.
Officeman (2006-02-04 14:11:00) [12]=)) ступил. уже разобрался с IP =))
Officeman (2006-02-04 14:03:00) [13]в IdICMPClient надо задавать HOST в виде IP адреса.
как узнать IP адрес =)) например адрес такой http://stalkerz.info
DrPass (2006-02-04 13:35:00) [14]Проверить связь можно обычным пингом, например, с помощью компоненты IdICMP
Officeman (2006-02-04 13:31:00) [15]после запуска программы, открывается окно броузера в котором загружается
html(или другая) страничка с баннерами. в слущае если такой адрес найден.
>Просто запрашивай ресурс и обрабатывай ошибку.
Это можно сделать если будет использоватся компонент TWebBrowser?
или это можно сделать без использованяи компонента?
я открываю ссылки так обычно.
ShellExecute(0, '', ' http://......', '', '', SW_SHOW);
каким образом можно сделать обработку проверки. если адрес не найден?
программой будет пользоватся примерно 100 разных человек ежедневно.
Хочу чтоб прога пользу приносила.
Anatoly Podgoretsky (2006-02-04 13:21:00) [16]Что такое соединение с Интернет и зачем оно тебе нужно?
Просто запрашивай ресурс и обрабатывай ошибку.