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

Вниз

Как проверить есть ли подключение к Инету?   Найти похожие ветки 

 
Vitus   (2003-02-19 10:48) [0]

Hi! Моя прога автоматом формирует и отправляет кучу писем, но коннект к Инету не устойчивый, часто бывают проблемы. Скажите, плиз, как можно проверить есть ли коннект на момент отправки?


 
Anatoly Podgoretsky ©   (2003-02-19 11:48) [1]

Смотри статьи на сайте, что бы не повторяться, что такое Интернет и с чем его едят.


 
RV ©   (2003-02-19 11:52) [2]

Hi! Моя прога автоматом анализирует и прибивает кучу писем,а коннект к Инету устойчивый, редко бывают проблемы. Скажите, плиз, когда наконец спамеры утихнут?


 
Manulo ©   (2003-02-19 12:00) [3]


> RV © (19.02.03 11:52)
> Hi! Моя прога автоматом анализирует и прибивает кучу писем,а
> коннект к Инету устойчивый, редко бывают проблемы. Скажите,
> плиз, когда наконец спамеры утихнут?

Никогда! Спамер, это не хобби и не проффесия, это диагноз!


 
Vitus   (2003-02-19 12:10) [4]

Ну вот наехали на честного человека :( Никакой я не спамер, я их тоже ненавижу! У меня просто рассылка счетов клиентам.
Лучше бы по существу что-нибудь сказали :)


 
Reindeer Moss Eater   (2003-02-19 12:13) [5]

Зачем проверять наличие какого-то соединения?

Пробуй отправить. Получилось - хорошо, не получилось - сервер недоступен.


 
Anatoly Podgoretsky ©   (2003-02-19 13:33) [6]

А для кучи счетов неплохо бы немного и дережек затратить на более приличный интернет, может еще и почтовый сервер локальный поставить.
Главное что действительно ничего не надо, все автоматом сделает Виндоус, надо только настроить.


 
zzet ©   (2003-02-19 15:15) [7]

>просто рассылка счетов клиентам.

Чистой воды спам :-))


 
gsu ©   (2003-02-19 15:26) [8]

>> Как проверить есть ли подключение к Инету
просто попробуй посоединиться


 
NUTS   (2003-02-19 15:30) [9]


> gsu © (19.02.03 15:26)
> >> Как проверить есть ли подключение к Инету
> просто попробуй посоединиться

привет брат


 
gsu ©   (2003-02-19 15:32) [10]

>> привет брат
мой брат с компом не "дружит", но все равно привет


 
JibSkeart ©   (2003-02-19 16:30) [11]

можно же вроде и через TAPI
поищи на енту тему документацию


 
Мазут Береговой   (2003-02-19 21:37) [12]


interface
uses
Windows, SysUtils, Registry, WinSock, WinInet;

type
TConnectionType = (ctNone, ctProxy, ctDialup);

function ConnectedToInternet : TConnectionType;
function RasConnectionCount : Integer;


implementation

//For RasConnectionCount =======================
const
cERROR_BUFFER_TOO_SMALL = 603;
cRAS_MaxEntryName = 256;
cRAS_MaxDeviceName = 128;
cRAS_MaxDeviceType = 16;
type
ERasError = class(Exception);

HRASConn = DWord;
PRASConn = ^TRASConn;
TRASConn = record
dwSize: DWORD;
rasConn: HRASConn;
szEntryName: Array[0..cRAS_MaxEntryName] Of Char;
szDeviceType : Array[0..cRAS_MaxDeviceType] Of Char;
szDeviceName : Array [0..cRAS_MaxDeviceName] of char;
end;

TRasEnumConnections =
function (RASConn: PrasConn; { buffer to receive Connections data }
var BufSize: DWord; { size in bytes of buffer }
var Connections: DWord { number of Connections written to buffer }
): LongInt; stdcall;
//End RasConnectionCount =======================


function ConnectedToInternet: TConnectionType;
var
Reg : TRegistry;
bUseProxy : Boolean;
UseProxy : LongWord;
begin
Result := ctNone;
Reg := TRegistry.Create;
with REG do
try
try
RootKey := HKEY_CURRENT_USER;
if OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet settings",False) then begin
//I just try to read it, and trap an exception
if GetDataType("ProxyEnable") = rdBinary then
ReadBinaryData("ProxyEnable", UseProxy, SizeOf(LongWord) )
else begin
bUseProxy := ReadBool("ProxyEnable");
if bUseProxy then
UseProxy := 1
else
UseProxy := 0;
end;
if (UseProxy <> 0) and ( ReadString("ProxyServer") <> "" ) then Result := ctProxy;
end;
except
//Obviously not connected through a proxy
end;
finally
Free;
end;

//We can check RasConnectionCount even if dialup networking is not installed
//simply because it will return 0 if the DLL is not found.
if Result = ctNone then begin
if RasConnectionCount > 0 then Result := ctDialup;
end;
end;

function RasConnectionCount : Integer;
var
RasDLL : HInst;
Conns : Array[1..4] of TRasConn;
RasEnums : TRasEnumConnections;
BufSize : DWord;
NumConns : DWord;
RasResult : Longint;
begin
Result := 0;

//Load the RAS DLL
RasDLL := LoadLibrary("rasapi32.dll");
if RasDLL = 0 then exit;

try
RasEnums := GetProcAddress(RasDLL,"RasEnumConnectionsA");
if @RasEnums = nil then
raise ERasError.Create("RasEnumConnectionsA not found in rasapi32.dll");

Conns[1].dwSize := Sizeof (Conns[1]);
BufSize := SizeOf(Conns);

RasResult := RasEnums(@Conns, BufSize, NumConns);

If (RasResult = 0) or (Result = cERROR_BUFFER_TOO_SMALL) then Result := NumConns;
finally
FreeLibrary(RasDLL);
end;
end;


 
Мазут Береговой   (2003-02-19 21:46) [13]

Вот этим компонентом пользовался как на T1 соединении, так и на DialUp. работает четко: только dialup пропадает, сразу дает сообщение; на кабельном или делаешь disable, или выдираешь кабель - тоже дает сообщение.
{*************************************************************}
{ TOnlineIP Component for Delphi 32 }
{ Version: 1.1 }
{ Author: Aleksey Kuznetsov }
{ E-Mail: info@utilmind.com }
{ Home Page: http://www.utilmind.com }
{ Created: May, 9, 1999 }
{ Modified: May, 17, 1999 }
{ Legal: Copyright (c) 1999, UtilMind Solutions }
{*************************************************************}
{ This component determines online status of the computer }
{ and returns current IP address }
{*************************************************************}
{ PROPERTIES: }
{ IP: String - Current IP address of local machine }
{ Online: Boolean - Online status of local machine }
{ DispatchInterval - Determines in milliseconds the }
{ intervals of time between testing }
{ online of a mode of computer }
{ Enabled: Boolean - As usual... =) }
{ EVENTS: }
{ OnChanged - causes if online status changed. }
{*************************************************************}
unit OnlineIP;

interface

uses
Windows, Messages, Winsock, Classes, Forms;

type
TOnlineIP = class(TComponent)
private
FEnabled: Boolean;
FDispatchInterval: Cardinal;
FWindowHandle: hWnd;
FOnline: Boolean;
FIP: String;
FOnChanged: TNotifyEvent;

procedure UpdateTimer;
procedure SetEnabled(Value: Boolean);
procedure SetDispatchInterval(Value: Cardinal);
procedure SetNoneBool(Value: Boolean);
procedure SetNoneStr(Value: String);
procedure WndProc(var Msg: TMessage);
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Enabled: Boolean read FEnabled write SetEnabled;
property DispatchInterval: Cardinal read FDispatchInterval write SetDispatchInterval;
property Online: Boolean read FOnline write SetNoneBool;
property IP: String read FIP write SetNoneStr;
property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
end;

procedure Register;

implementation

function LocalIP: String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
end;

constructor TOnlineIP.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FEnabled := True;
FDispatchInterval := 1000;
FWindowHandle := AllocateHWnd(WndProc);
UpdateTimer;
end;

destructor TOnlineIP.Destroy;
begin
FEnabled := False;
UpdateTimer;
DeallocateHWnd(FWindowHandle);
inherited Destroy;
end;

procedure TOnlineIP.WndProc(var Msg: TMessage);
var
OldState: Boolean;
begin
with Msg do
if Msg = wm_Timer then
try
FIP := LocalIP;
OldState := FOnline;
FOnline := (FIP <> "") and (FIP <> "127.0.0.1");
if (not OldState and FOnline) or
(OldState and not FOnline) then
if Assigned(FOnChanged) then FOnChanged(Self);
except
Application.HandleException(Self);
end
else
Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;

procedure TOnlineIP.UpdateTimer;
begin
KillTimer(FWindowHandle, 1);
if (FDispatchInterval <> 0) and FEnabled then
SetTimer(FWindowHandle, 1, FDispatchInterval, nil);
end;

procedure TOnlineIP.SetEnabled(Value: Boolean);
begin
if Value <> FEnabled then
begin
FEnabled := Value;
UpdateTimer;
end;
end;

procedure TOnlineIP.SetDispatchInterval(Value: Cardinal);
begin
if Value <> FDispatchInterval then
begin
FDispatchInterval := Value;
UpdateTimer;
end;
end;

procedure TOnlineIP.SetNoneBool(Value: Boolean); begin {} end;

procedure TOnlineIP.SetNoneStr(Value: String); begin {} end;

procedure Register;
begin
RegisterComponents("Designed", [TOnlineIP]);
end;

end.



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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
1-17044
RV
2003-02-25 12:16
2003.03.06
FastReport. Windows. Глюки со шрифтами.


1-17032
Checist [root]
2003-02-25 10:06
2003.03.06
Запуск файла


6-17227
Kostya
2002-12-31 07:37
2003.03.06
Запрет запуска IEExplorer


4-17453
Bored
2003-01-19 03:51
2003.03.06
Доступ к процессам


1-17053
Skywalker
2003-02-25 14:59
2003.03.06
TreeView