Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Das Programm soll wissen ob man Online ist (https://www.delphipraxis.net/7245-das-programm-soll-wissen-ob-man-online-ist.html)

ssach 6. Aug 2003 15:57


Das Programm soll wissen ob man Online ist
 
hy,

ich bin gerade dabei einen internetkosten zahler zu basteln, mein problem:

ich habe einen Timer der jede Sekunde einmal tickt, aber wie soll ich es anstellen nachzuschauen ob man gerade onlie istgegangen ist) oder nicht?

danke

cu :dancer:

Uncle Cracker 6. Aug 2003 16:02

Re: Das Programm soll wissen ob man Online ist
 
Guck mal hier: http://www.delphipraxis.net/viewtopic.php?t=6540

Oder nimm eine Komponente.

Pseudemys Nelsoni 6. Aug 2003 17:00

Re: Das Programm soll wissen ob man Online ist
 
bei mir ist InternetGetConnectedState ein undefinierter bezeichner?

Luckie 6. Aug 2003 17:11

Re: Das Programm soll wissen ob man Online ist
 
Wininet.pas einbinden.

ssach 6. Aug 2003 17:16

Re: Das Programm soll wissen ob man Online ist
 
bei mir funnzt es mit InterentGetconnected.... auch nicht!?
kann jemand mir ne andere loesung geben?

cu

Luckie 6. Aug 2003 17:27

Re: Das Programm soll wissen ob man Online ist
 
Aha. "Funzt nicht". Sehr aussagekräftig. :roll: Wie stellst du dir jetzt unsere weitere Hilfe hier im Forum vor?

Lefko 6. Aug 2003 17:32

Re: Das Programm soll wissen ob man Online ist
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hihi, ich hab auch grad einen Internetkosten-Zaehler gemacht :)

Hier, so geht es ganz einfach:

Code:
uses WinInet;

...

procedure TForm1.Button1Click(Sender: TObject);
var flags: Dword;
begin
if InternetGetConnectedState(@flags, 0) then {mache irgendwas}
end;
Wenn du auch noch rausfinden willst, was für eine Verbindung aufgebaut wurde nimm folgendes:

Code:
uses WinInet;

...

const
  MODEM = 1;
  LAN = 2;
  PROXY = 4;
  BUSY = 8;

...

public declaration //von Form1
  function GetConnectionKind(var strKind: string): Boolean;
  end;

...

implementation

function Tform1.GetConnectionKind(var strKind: string): Boolean;
var flags: DWORD;
begin
  strKind := 'Keine Verbindung';
  Result := InternetGetConnectedState(@flags, 0);
  if Result then
  begin
    if (flags and MODEM) = MODEM then strKind := 'Modem-Verbindung';
    if (flags and LAN) = LAN then strKind := 'LAN-Verbindung';
    if (flags and PROXY) = PROXY then strKind := 'Proxy-Verbindung';
    if (flags and BUSY) = BUSY then strKind := 'Modem Busy';
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var strKind : string;
begin
if GetConnectionKind(strKind) then showmessage(StrKind);
end;
damit zeigst du eine Message mit dem Verbindungstyp. :spin:

Nun, es gibt auch noch andere Möglichkeiten...
du kannst dir die TRasMonitor-Komponente (im Anhang) herunterladen und installieren, dann kannst du mit dem Timer schauen, ob "RasMonitor1.online = true" ist.


MfG Lefko

P.S. Ich hab mein Programm mal angehängt, vielleicht kannst du dir ein wenig Inspiration holen :wink:

Pseudemys Nelsoni 6. Aug 2003 17:37

Re: Das Programm soll wissen ob man Online ist
 
danke @luckie

nun hab ich aber ein anderes problem:

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
 if InternetGetConnectedState(INTERNET_CONNECTION_OFFLINE , 0) then
 showmessage('ja');
end;
INTERNET_CONNECTION_OFFLINE << undefinierte bezeichner

Luckie 6. Aug 2003 17:38

Re: Das Programm soll wissen ob man Online ist
 
Genau diese Lösung haben wir ihm ja auch gegeben. Nur da er sich in Schweigen hüllt, was wie nicht geht. Ist es sinnlos hier weiter zumachen.

Luckie 6. Aug 2003 17:41

Re: Das Programm soll wissen ob man Online ist
 
Delphi-Quellcode:
const
  INTERNET_CONNECTION_OFFLINE = $20;

Pseudemys Nelsoni 6. Aug 2003 22:15

Re: Das Programm soll wissen ob man Online ist
 
danke sehr, funzt sicher nun, nur würd ich gern noch wissen wofür das $20 nun steht, wenns mir noch jemand sagt ... :party:

Chewie 6. Aug 2003 22:19

Re: Das Programm soll wissen ob man Online ist
 
Das heißt, dieser Tip von Luckie kostet dich 20 Dollar...

Nein, $20 ist einfach der Wert der Konstanten INTERNET_CONNECTION_OFFLINE. Diesen Namen kann man sich doch einfacher merken als den Wert.

Pseudemys Nelsoni 6. Aug 2003 22:30

Re: Das Programm soll wissen ob man Online ist
 
danke, und woher weiss man den?

Chewie 6. Aug 2003 22:42

Re: Das Programm soll wissen ob man Online ist
 
Das steht in der Regel in der Unit, in der die API-Funktionen importiert werden, die diese Konstanten benutzen. Diese Units sind Übersetzungen der C-Header, die Microsoft angefertigt hat. Teilweise sind diese Header nicht vollständig übersetzt, und so kann es vorkommen, dass man sich die Konstantendeklarationen noch aus den C-Headern heraussuchen muss. Diese Header sind z.B. beim Windows PSDK oder beim Visual Studio dabei.

DaFox 6. Aug 2003 23:22

Re: Das Programm soll wissen ob man Online ist
 
Hi!

Nochmal zum anfänglichen Thema. Das Pollen per Timer ist natürlich nicht gerade das Gelbe vom Ei (das letzte mal als ich diesen Satz losgelassen habe antwortete mir ein MS-MVP: "Pah, du weißt garnicht wie viel in der Shell gepollt wird" :wink: ).
Ich würde dementsprechend auf die InternetStatusCallback API zurückgreifen.

Gruß,
Markus

FriFra 14. Aug 2003 15:13

Re: Das Programm soll wissen ob man Online ist
 
In einem Lan hinter einem Router kann man den ConnectedState vergessen. Woher sollte Windows auch wissen ob ein Router oder ein Proxy-Server gerade online ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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