![]() |
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: |
Re: Das Programm soll wissen ob man Online ist
|
Re: Das Programm soll wissen ob man Online ist
bei mir ist InternetGetConnectedState ein undefinierter bezeichner?
|
Re: Das Programm soll wissen ob man Online ist
Wininet.pas einbinden.
|
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 |
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?
|
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:
Wenn du auch noch rausfinden willst, was für eine Verbindung aufgebaut wurde nimm folgendes:
uses WinInet;
... procedure TForm1.Button1Click(Sender: TObject); var flags: Dword; begin if InternetGetConnectedState(@flags, 0) then {mache irgendwas} end;
Code:
damit zeigst du eine Message mit dem Verbindungstyp. :spin:
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; 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: |
Re: Das Programm soll wissen ob man Online ist
danke @luckie
nun hab ich aber ein anderes problem:
Delphi-Quellcode:
INTERNET_CONNECTION_OFFLINE << undefinierte bezeichner
procedure TForm1.FormShow(Sender: TObject);
begin if InternetGetConnectedState(INTERNET_CONNECTION_OFFLINE , 0) then showmessage('ja'); end; |
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.
|
Re: Das Programm soll wissen ob man Online ist
Delphi-Quellcode:
const
INTERNET_CONNECTION_OFFLINE = $20; |
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:
|
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. |
Re: Das Programm soll wissen ob man Online ist
danke, und woher weiss man den?
|
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.
|
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 ![]() Gruß, Markus |
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