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