Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi DSL-Verbindungsmonitor! (https://www.delphipraxis.net/35419-dsl-verbindungsmonitor.html)

richard_boderich 6. Dez 2004 20:53


DSL-Verbindungsmonitor!
 
hallo leute,

ich moechte mir ein kleines tool programmieren, das den
zustand meiner dsl verbindung erkennt, meine aktuelle internet-ip anzeigt
und bei trennung wieder verbindet.

hatt jemand eine idee oder vorschlag wie ich beginnen kann?

indy oder api und sockets?

es gibt doch auch ein problem dem verbindungsstatus herauszufinden,
wenn ich im forum richtig gelesen hab.

danke schonmal vorweg

euer richard :)

PierreB 6. Dez 2004 20:57

Re: DSL-Verbindungsmonitor!
 
moin,


also das mit dem verbinden und trennen dürfte wohl etwas komplizierter werden. ;)

wie du deine ip herausbekommst findest du hier:
http://www.delphipraxis.net/internal...5&highlight=ip

//Edit

hier weitere links (müsste erstma alles ein was du suchst ;))
http://www.delphi-source.de/tipps/?id=160
http://www.delphi-source.de/tipps/?id=169
http://www.delphi-source.de/tipps/?id=595

richard_boderich 6. Dez 2004 21:02

Re: DSL-Verbindungsmonitor!
 
hi delpmen,

ich muss dazu sagen das ich nicht über nen router gehe sondern per
dfü verbindung einwaehle. da muesst es doch apis geben um den
connection status rauszufinden oder?

der code den du mir empfohlen hast will ich nicht nehmen,da ich da
auf externe internetdienste angewiesen bin. sind die mal nicht erreichbar
is kacke mit der funktion

PierreB 6. Dez 2004 21:04

Re: DSL-Verbindungsmonitor!
 
^^ siehe oben ;)

Zitat:

will ich nicht nehmen,da ich da
auf externe internetdienste angewiesen bin
was meinst du damit ?

richard_boderich 6. Dez 2004 21:09

Re: DSL-Verbindungsmonitor!
 
he danke delphmen,

die neuen links sind das was ich suchte.
many thx :)

Dakuba 6. Dez 2004 21:13

Re: DSL-Verbindungsmonitor!
 
Das ist aus der Delphi Source Library hoffe des hilft dir:


Folgender Code stellt eine komplette Unit eines Formulars dar, die beim Klicken auf den Button feststellt, ob eineVerbindung ins Internet besteht oder nicht.
Delphi-Quellcode:
unit CheckInternetConnection1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Registry, WinSock, WinInet;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
      { Private-Deklarationen }
    public
      { Public-Deklarationen }
    end;

const
  cERROR_BUFFER_TOO_SMALL = 603;
  cRAS_MaxEntryName = 256;
  cRAS_MaxDeviceName = 128;
  cRAS_MaxDeviceType = 16;

type
  TConnectionType = (ctNone, ctProxy, ctDialup);
  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; var BufSize: DWord;
     var Connections: DWord): LongInt; stdcall;

var
  Form1: TForm1;

function ConnectedToInternet: TConnectionType;
function RasConnectionCount: Integer;

implementation

{$R *.DFM}

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\WindowsCurrentVersion\Internet settings',
        false) then begin
          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
      end;
    finally
      Free;
    end;
    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;
  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;

procedure TForm1.Button1Click(Sender: TObject);
var Status: TConnectionType;
  sMsg: string;
begin
  Status := ConnectedToInternet;
  if Status = ctDialup then sMsg := 'Im Internet!';
  if Status = ctNone then sMsg := 'Nicht im Internet!';
  if Status = ctProxy then sMsg := 'Proxyserver';
  ShowMessage(string(sMsg));
end;

end.

Luckie 6. Dez 2004 21:16

Re: DSL-Verbindungsmonitor!
 
Setzen 6:
Zitat:

---------------------------
Project1
---------------------------
Nicht im Internet!
---------------------------
OK
---------------------------
Ich bin aber definitiv online, da ich gerade diesen Beitrag schreibe. ;)

Matze 6. Dez 2004 21:22

Re: DSL-Verbindungsmonitor!
 
Der Code dürfte auch nur Überprüfen, ob man sich mittels DFÜ-Verbindung im Internet befindet, ist dies nicht der Fall, wird die Verbindung nicht erkannt.

PierreB 6. Dez 2004 21:22

Re: DSL-Verbindungsmonitor!
 
hmmm... :gruebel:

bei mir gehts auch net !

Zitat:

Nicht im Internet

richard_boderich 6. Dez 2004 21:45

Re: DSL-Verbindungsmonitor!
 
so jungens bin jetz am coden,

mir fehlt aber immer noch ne methode die ip des dfü adapters abzufragen.
hatt da denn keiner nen api call zur hand?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz