webForumDet fria alternativet

Aktiv uppkoppling

4 svar · 260 visningar · startad av AG

AGMedlem sedan mars 20001 266 inlägg
#1

Testade göljande kod i ett program, för att se ifall jag har en aktiv uppkoppling, den genererar Not Connected även fast jag är ansluten, har telia adsl.
Nedan följer koden:

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

function IsConnectedToInternet: Boolean; 
var
dwConnectionTypes: DWORD; 
begin
dwConnectionTypes :=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsConnectedToInternet then 
ShowMessage('Connected.')
else
ShowMessage('Not Connected.')

end;

end.

Andreas

ViktorMedlem sedan aug. 20021 752 inlägg
#2

Jag har bara kollat lite på VB koden här, http://www.mvps.org/vbnet/index.html?code/network/internetgetconnectedstate.htm och där ser det ut som att du ska skicka med en tom DWORD som sedan i funktionen sätts och som du sen får kolla vad den är satt till, typ

function IsConnectedToInternet: Boolean; 
var
dwConnectionTypes: DWORD; 
begin
InternetGetConnectedState(@dwConnectionTypes, 0);

if(dwConnectionTypes AND INTERNET_CONNECTION_MODEM)
  Result:=true;
else if(dwConnectionTypes AND INTERNET_CONNECTION_LAN)
  Result:=true;
else if(dwConnectionTypes AND INTERNET_CONNECTION_PROXY)
  Result:=true;
else
  Result:=false;
end;

Jag har varken testat VB koden eller jobbat i Delphi men detta är min tolkning, hoppas det är rätt :)

/Viktor

AGMedlem sedan mars 20001 266 inlägg
#3

Får det ej att fungera.
Skumt.

Andreas

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

När jag kör koden säger den att jag är connected. (Telia ADSL)

/red är du säker på att det ska vara +? Bör det inte var or (elelr om det kanske ska vara and..)?

agneta_rungMedlem sedan juli 2002145 inlägg
#5

Om du bara vill veta om du är uppkopplad eller inte behöver du bara kolla returvärdet på InternetConnectedState. Så här:

function IsConnectedToInternet: Boolean; 
var
  dwConnectionTypes: dword;
begin
  Result :=  InternetGetConnectedState(@dwConnectionTypes, 0)
end;

Vill du däremot veta på vilket sätt du är uppkopplad måste du titta på flaggorna, typ så här:

function TypAvAnslutning: string;
var
  dwConnectionTypes: dword;
begin
  if InternetGetConnectedState(@dwConnectionTypes, 0) then begin
    if (dwConnectionTypes and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
      Result := 'Modem'
    else if (dwConnectionTypes and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
      Result := 'LAN'
    else if (dwConnectionTypes and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
      Result := 'Proxy'
    else
      Result := 'Annan typ av anslutning'
    end else
      Result := 'Ingen anslutning'
end;

Funkar för mig i alla fall...

123 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)