AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Internet Verbindungsdauer
Thema durchsuchen
Ansicht
Themen-Optionen

Internet Verbindungsdauer

Ein Thema von Master_BB · begonnen am 25. Mai 2003 · letzter Beitrag vom 21. Dez 2003
Antwort Antwort
Seite 1 von 3  1 23      
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

Internet Verbindungsdauer

  Alt 25. Mai 2003, 11:28
Hy,
ich wüßte gerne wie ich mir in echtzeit in meinem Programm meine Verbindungsdauer anzeigen lassen kann.
Da ich schon oft gelesen hab das es keinen richtigen Befehl dazu gibt könnte mir ja wenigstens einer sagen wie man herraus findet wann die Connection gestartet wurde damit man das dann mit der Uhrzeit in relation bringen kann. So müßte es eigentlich gehen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Pyr0cracker
Pyr0cracker

Registriert seit: 15. Nov 2002
Ort: Norddeutschland
232 Beiträge
 
Delphi 7 Personal
 
#2
  Alt 25. Mai 2003, 11:54
Hi
Tja, das habe ich auch schon probiert. Ich hab sogar 4 (vier!) Möglichkeiten gefunden wie man angeblich rauskriegt ob es eine Internetverbindung gibt.
Leider geht nix davon

Probiers mal indem du einen server wie google anpingen kannst, der Server dürfte so ziemlich immer Online sein...

Gruß
Dorian Vasco
dorianvasco.de
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#3
  Alt 4. Jun 2003, 22:01
Welches Betriebssystem nutzt du?
Unter Win2k/XP/2003/.NET kannst du dir mit 2 "einfachen" API Funktionen die Verbindungszeit aller RAS Verbindungen ausgeben lassen.

Wenn du noch interesse hast kann ich dir da gern helfen
Einziges Problem ist, das dieses program wirklcih alle RAS Connections auflistet, du bekommst also auch eventuelle LAN Verbindungen welche sich nicht so einfach von Internet Verbindungen unterscheiden lassen.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4
  Alt 4. Jun 2003, 23:01
@magicshadow

Wenns nur 2 sind, dann poste die doch mal. Könnte ja auch andere interessieren (incl. mir ). Viele lesen die Beträge ohne jedes mal was dazu zu schreiben.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 4. Jun 2003, 23:09
Hallo und herzlich Willkommen im Forum!

Schau Dir doch mal den Internet-Monitor von Luckie an. Der könnte Dir weiterhelfen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#6
  Alt 4. Jun 2003, 23:21
Hier sind sie:

Als erstes die Deklarationen:
Code:
const
  RAS_MaxDeviceType = 16;
  RAS_MaxEntryName = 256;
  RAS_MaxDeviceName = 128;
type
{$IFNDEF UNICODE}
    TCHAR = type Char;
  {$ELSE}
    TCHAR = type WideChar;
  {$ENDIF}
  RAS_STATS = packed record
   dwSize               : DWORD;
   dwBytesXmited        : DWORD;
   dwBytesRcved         : DWORD;
   dwFramesXmited       : DWORD;
   dwFramesRcved        : DWORD;
   dwCrcErr             : DWORD;
   dwTimeoutErr         : DWORD;
   dwAlignmentErr       : DWORD;
   dwHardwareOverrunErr : DWORD;
   dwFramingErr         : DWORD;
   dwBufferOverrunErr   : DWORD;
   dwCompressionRatioIn : DWORD;
   dwCompressionRatioOut : DWORD;
   dwBps                : DWORD;
   dwConnectDuration    : DWORD;
  end;

 PRasConnA = ^PRasConn;
 PRasConnW = ^PRasConn;
 PRasConn = record
    dwSize      : DWORD;
    hrasconn    : DWORD;
    szEntryName : array [0..RAS_MaxEntryName] of Char;
    szDeviceType : array [0..RAS_MaxDeviceType] of Char;
    szDeviceName : array [0..RAS_MaxDeviceName] of Char;
 end;
dann die API's:
Code:
function RasEnumConnections(var lprasconn : PRasConn; var lpcb : DWORD; var lpcconnections : DWORD) : DWORD; stdcall; external 'RasApi32.dll' name 'RasEnumConnectionsA';
function RasGetConnectionStatistics(const hRasConn : DWORD;const lpStatistics : RAS_STATS) : DWORD; stdcall; external 'RasApi32.dll';
und Aufgerufen wierd das ganze dann so:
Code:
Procedure GetSystemParams;

var Res,lpcb,NumberOfEntries :DWORD;
    Entries                 :array[0..255] of PRasConn;
    mystats                 :RAS_STATS;
    i                       :DWORD;
begin
 Entries[0].dwsize:=412;
 lpcb:=256*Entries[0].dwsize;
 NumberOfEntries:=0;
 Res := RasEnumConnections(Entries[0], lpcb, NumberOfEntries);
 if res <> 0 then exit;
 mystats.dwsize:=sizeof(mystats);
 if NumberOfEntries=0 then exit;
 for i:=0 to NumberOfEntries-1 do begin
    Res:= RasGetConnectionStatistics(Entries[i].hrasconn,mystats);
    if Res=0 then begin
       showmessage(inttostr(mystats.dwConnectDuration)); //Die Verbindungszeit in ms
    end;
 end;
end;
Die Zeit kann man dann recht einfach in minuten, stunden, tage, usw umrechnen. (nach ca. 42,2 Tagen beginnt der counter wieder bei 0, so lange sollte aber kein Windows laufen *g*)
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#7
  Alt 5. Jun 2003, 18:05
Kann man beim Trennen der Verbindung auch irgendwie die Gesamtzeit der Verbindung in eine Datei speichern und dann beim nächsten mal von dem gespeicherten Wert weiter zählen lassen? (mit magicshadow code)
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#8
  Alt 5. Jun 2003, 18:18
Also wenn du nur max. eine gleichzeitige RAS-Con hast solltes das kein problem sein. Nur wenn es mehrere sein können (LAN+Inet) dann wird das nicht so einfach zu unterscheiden welche welche ist, da die reienvolge der auflistung die des startens ist.

Aber im Prinzip:
Mit nem Timer jede Secunde gucken, ob die RAS Verbindung noch aktiv ist, wenn nicht einfach den letzten Zeit wert in ne Datei speichern.
Würd dir zum speichern dann aber raten in secunden zu runden, da sonst ein Überlauf droht (und irgendwann bei 0 angefangen wird).

PS: Kleiner Tip, hohl dir ne Flat, da ist die online zeit egal
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#9
  Alt 5. Jun 2003, 19:40
naja online zeit egal mit na flat würde ich nicht sagen ich habe immer das probelm mit der 24stunden trennung und wenn ich abends weg will ist es mir oft zu lästig in Status der connection zu kukn wie land die schon läuft damit der rechner nicht plötzlich off is was ja fatal wäre.

- dann zu dem code irgentwie krieg ich das nicht hin das er mit in einem label die zeit anzeigt er sagt immer das es das label nicht gib wenn ich es in die prozedur mit einfüge.
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#10
  Alt 5. Jun 2003, 19:56
Jo, amch mal volgendes:

Code:
TForm1 = class(TForm)
 ...
 procedure RASConTime;
 ...
privare
 ...
public
 ...
end;

...

procedure TForm1.RASConTime;
var ...
begin
...
end;
Verstanden wie ich das mein, wenn ncih guck dir mal an, wie die Funktionen deklariert werden, die das System automatisch anlegt (z.B. Button1.OnClick usw.)
Dann kennt er in der Procedure auch die komponenten.

Oder du machst ne function und übergibst einfach den wert als rückgabe.

Aber mal ne Frage, wofür willst du das benutzen? Vieleicht gibet ja noch einen besseren Weg?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz