Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.61 MB
Время: 0.047 c
1-17153
МахмуД
2003-02-22 19:05
2003.03.06
Господа! Как при выходе из ColorDialog получить цвет форматаRGB?


3-16905
Rom@n
2003-02-15 07:30
2003.03.06
переносимая база данных


8-17201
_toltec
2002-11-24 02:17
2003.03.06
GIF


4-17461
UltraFreak
2003-01-14 18:51
2003.03.06
Блокировка диалогов


3-16871
VIB
2003-02-18 10:04
2003.03.06
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский