Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Интернет счетчик   Найти похожие ветки 

 
DreymanD   (2004-08-11 17:04) [0]

Привет мастерам!
Хочу сделать интернет счетчик, только не знаю такой команды, которая б, проверяла систему - подключена ли она к И-нету или нет? Надо чтоб прога висела в трее(как сделать знаю), затем когда мы подключились к И-нету, запускался таймер, который сообщал бы, сколько времени мы в И-нете провели... Если отключились - таймер остановился. Если еще раз подключились - таймер продолжает счет.

Заранее спасибо!


 
MacroDenS ©   (2004-08-11 17:05) [1]

это тебе в раздел сети надо...


 
Smithson ©   (2004-08-11 17:11) [2]

Что  ты имеешь в виду под "подключением к интернету"? Диалап-соединение? Или подключение выделенки? Во-втором случае подключение есть всегда, когда активна сетевая карта.
В первом, смотри в строну RAS-функций.


 
DreymanD   (2004-08-11 17:37) [3]

Smithson ©   (11.08.04 17:11) [2]
Да-да, Диалап-соединение.
Начет каких Ras функций ты говоришь?


 
MacroDenS ©   (2004-08-11 17:42) [4]

насчет есть ли на данный момент соединение с инетом или нет, я темку где то в FAQ видел...


 
Dimaxx   (2004-08-11 22:57) [5]

Вот текст компонента по определению в сети ли тачка (иконку для палитры сам прилепишь):

unit INetDetector;

interface

uses Windows, Messages, Classes, Forms, Winsock;

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

   FCurrentIP : String;       {<--RLM Diagnostics}
   FpCurrHostEnt : PHostEnt;  {<--RLM Diagnostics}

   procedure UpdateTimer;
   procedure SetEnabled(Value: Boolean);
   procedure SetDispatchInterval(Value: Cardinal);
   procedure SetNoneBool(Value: Boolean);
   procedure WndProc(var Msg: TMessage);
 protected
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;

   property CurrentIP : String read FCurrentIP;  {<--RLM Diagnostics}
   property pCurrHostEnt : PHostEnt read FpCurrHostEnt;  {<--RLM Diagnostics}

 published
   property Enabled: Boolean read FEnabled write SetEnabled;
   property DispatchInterval: Cardinal read FDispatchInterval write SetDispatchInterval;
   property Online: Boolean read FOnline write SetNoneBool;
   property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
 end;

procedure Register;

implementation

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

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

procedure TINetDetector.WndProc(var Msg: TMessage);
var
 OldState: Boolean;
 Key: hKey;
 PC: Array[0..4] of Char;
 Size: Integer;
 RegSays : Boolean;  {<-- RLM 12/13/99}

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

 procedure FixOnlineState;
 begin
   if (not OldState and FOnline) or
      (OldState and not FOnline) then
      if Assigned(FOnChanged) then
       FOnChanged(Self);
 end;

begin    
 with Msg do
  if Msg = wm_Timer then
   try
    OldState := FOnline;
    FOnline := IsIPPresent;
    FixOnlineState;

    if RegOpenKey(HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\RemoteAccess", Key) = ERROR_SUCCESS then
     begin
      Size := 4;
      if RegQueryValueEx(Key, "Remote Connection", nil, nil, @PC, @Size) = ERROR_SUCCESS then
       begin
        {Original}
        {
        FOnline := PC[0] = #1;
        FixOnlineState;
        }
        {Changed 12/13/99 RLM -- AOL leaves PC bytes all 00"s}
        RegSays := PC[0] = #1;
        FOnLine := FOnLine or RegSays;
        FixOnlineState;
       end
      else
       begin
        FOnline := IsIPPresent;
        FixOnlineState;
       end;
      RegCloseKey(Key);
     end
    else
     begin
      FOnline := IsIPPresent;
      FixOnlineState;
     end;
   except
    Application.HandleException(Self);
   end
  else
   Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;

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

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

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

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

procedure Register;
begin
 RegisterComponents("Internet", [TINetDetector]);
end;

end.


 
AndersoNRules   (2004-08-11 23:04) [6]

const
 INTERNET_CONNECTION_MODEM      = 1;
 INTERNET_CONNECTION_LAN        = 2;
 INTERNET_CONNECTION_PROXY      = 4;
   INTERNET_CONNECTION_MODEM_BUSY = 8;
   winetdll = "wininet.dll";

...
function InternetGetConnectedState(lpdwFlags: LPDWORD; dwReserved:DWORD):BOOL; stdcall;
 external winetdll name "InternetGetConnectedState";

...
function InternetConnected: Boolean;
var  dwConnectionTypes: DWORD;
begin  dwConnectionTypes :=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;


 
[serzh]   (2004-08-13 11:52) [7]

А можно сделать, что б твоя прога сама с нетом соединялась и тогда легче время считать будет!



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

Форум: "Сети";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
11-1081879198
hammer
2004-04-13 21:59
2004.10.24
Фреймы в kol e


14-1096664608
Folk
2004-10-02 01:03
2004.10.24
Не уж то Билли Гейс такой плохой человек?


6-1092898751
PL
2004-08-19 10:59
2004.10.24
Еще раз о пересылке файлов


14-1096906491
zokzok
2004-10-04 20:14
2004.10.24
посоветуйте, какой модем купить


14-1096294909
QuasiLamo
2004-09-27 18:21
2004.10.24
Эксперты для форматирования кода D7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский