Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизКак програмно узнать есть ли коннект с интернетом.? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.045 c