![]() |
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 :) |
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: ![]() //Edit hier weitere links (müsste erstma alles ein was du suchst ;)) ![]() ![]() ![]() |
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 |
Re: DSL-Verbindungsmonitor!
^^ siehe oben ;)
Zitat:
|
Re: DSL-Verbindungsmonitor!
he danke delphmen,
die neuen links sind das was ich suchte. many thx :) |
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. |
Re: DSL-Verbindungsmonitor!
Setzen 6:
Zitat:
|
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.
|
Re: DSL-Verbindungsmonitor!
hmmm... :gruebel:
bei mir gehts auch net ! Zitat:
|
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? |
Re: DSL-Verbindungsmonitor!
Also wegen der IPs hab ich hier ne Function für Dich, die dir alle IPs, die der PC "besitzt" anzeigt... Die einzelnen IPs werden mit einem ";" getrennt. Bei "uses" noch "winsock" eifügen, denn sollte des laufen....
Delphi-Quellcode:
Function GetLocalIPs: String;
type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=''; if WSAStartup($0102, wsaData)<>0 then exit; try if gethostname(HostName, SizeOf(HostName)) <> 0 then exit; HostInfo:= gethostbyname(HostName); if HostInfo=nil then Exit; Addr:=Pointer(HostInfo^.h_addr_list); if (Addr=nil) or (Addr^=nil) then exit; Result:=StrPas(inet_ntoa(Addr^^)); inc(Addr); while Addr^<>nil do begin Result:=Result+';'+StrPas(inet_ntoa(Addr^^)); inc(Addr); end; finally WSACleanup; end; end; |
Re: DSL-Verbindungsmonitor!
Liste der Anhänge anzeigen (Anzahl: 1)
so leutz,
version 0.1 von meinem dsl-verbindungsmonitor ist fertig (prog ist im anhang, nur exe) habe prog bei mir erfolgreich getestet, uebernehme jedoch keinerleih haftung für eventuell auftretende schaeden -> nutung auf eigene gefahr! //Edit Prog soll internetverbindung staendig online halten! wenn ihr trennen wollt, prog einfach beenden, und dann verbindung trennen //edit bei druck auf trennen, baut prog sofort wieder internetverbindung auf (sorry ist halt noch alpha) Einschraenkungen: 1.einwahl funzt nur über die standard dfü-verbindung, kein routersupport (vielleicht spaeter) 2.einwahl nutz den ie-dailer ->ie eigenschaften ->verbindungen 3.ip anzeige fehlerhaft (wird gerade gefixt) :) 4.nutzername+passwort muessen in dfü-verbindung gespeichert sein ->wichtig für einwahl ohne benuterabfrage Verbesserungsvorschlaege, to do list 1.einwahl direkt über Ras-dfü , und nich über ie-dailer 2.anzeige der ip, des eigenen dns hostnamen's, Ntp zeitanzeige 3.dfü verbindung auswaehlbar (bei mehreren vorhandenen) 4.anwahltimer ich versichere, das das prog nur das tut was es soll, naehlich eine internetverbindung aufbauen, sonst nichts es enthaelt weder schadensroutinen noch trojaner oder andere malware! (nur zu meiner rechtlichen absicherung) wuerde mich ueber anregungen,hinweise und bugreports von euch sehr freuen! bis denne Richard |
Re: DSL-Verbindungsmonitor!
wirklich so wenig interesse ? :(
*PUSH* |
Re: DSL-Verbindungsmonitor!
ok leutz hab probleme
hab jetz die sntp zeitanzeige integriert. funtz auch supi, aber wenn die internetverbindung stark belastet wird (z.b. durch sharingprogs) lastet die indy anzeige den rechner zu 100 prozent aus, will sagen anwendung reagiert nich solange bis die abfrage beendet ist. hatt da jemand nen vorschlag? |
Re: DSL-Verbindungsmonitor!
Zitat:
|
Re: DSL-Verbindungsmonitor!
Selbst wenn nicht sind diese Funktionen alle schon in meinem Windows (Ich hab XP) drin.
|
Re: DSL-Verbindungsmonitor!
Welche Indy-Komponente benutzt du denn?
|
Re: DSL-Verbindungsmonitor!
Soweit ich weiss gibts da kein vernümpftiges Tool in WinXP um den Traffic sinnvoll anzeigen zu lassen.
Oder? :?: :?: :?: :?: :?: |
Re: DSL-Verbindungsmonitor!
Wenn das tool auch Router unterstützen würde dann wäre es Perfekt :thumb:.
Aber ich glaube das ,dass mit Delphi nicht möglich ist ,oder? Mfg MrScholz |
Re: DSL-Verbindungsmonitor!
also grundsätzlich kann man jedes windows so
einrichten das bei einer getrennten dfü verbindung umgehend neu verbunden wird, vielleicht wäre es hier sinnvoller die windows eigenen einstellung umzuarbeiten bzw zu kontrollieren |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr. |
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