Avatar billede mrcorex Nybegynder
29. august 2001 - 22:07 Der er 11 kommentarer og
1 løsning

LAN-check

Hvordan checker jeg om jeg er online på nettet. Ikke internettet, men et ganske almindeligt netværk. Det må kunne lade sig gøre uden at pinge noget som helst.

Jeg vil helst ikke installere en eller anden komponent. Jeg vil gerne bede om source-kode.

/CoRex

Avatar billede mrcorex Nybegynder
29. august 2001 - 22:11 #1
Det skal fungere under Win9x, WinME, WinNT og Win2K.

OG det skal også fungere hvis jeg hiver lan-kablet ud af min klap-sammen pc.

/CoRex

PS. Hvis du sidder med løsningen og ikke vil gøre det for de point som er afsat, sætter jeg flere på.
Avatar billede domi Nybegynder
29. august 2001 - 22:13 #2
Hej =)
Prøv at gå ind i dos og så skriv ipconfig så kan du se hvem der er på netværket... og om du er tilsluttet!
Avatar billede mrcorex Nybegynder
29. august 2001 - 22:17 #3
Hallo. Se kategorien!
Avatar billede madd Nybegynder
29. august 2001 - 22:28 #4
corex > domi har måske en point\'e...

du kan - så vidt jeg ved - gøre flg. i en dos-promt

ipconfig > tempfile.txt

på den måde får du \"resultatet\" printet ud i tekstfilen.

Det samme burde du kunne gøre via. delphi. Altså køre \"ipconfig > tempfile.txt\" og læse indholdet.


/Mattias
Avatar billede domi Nybegynder
30. august 2001 - 08:06 #5
Hmnmmmmm.... Så ikke det var Delphi! Men jeg havde jo ret!
Avatar billede mrcorex Nybegynder
30. august 2001 - 10:22 #6
I har ret i at man kan gøre sådan, men det skal være den rene programmering. Ikke disse hovsa-løsninger. Det er til et lille program som skal køre på over 40 computere og holde øje med om de er på nettet. Når de så er på nettet skal programmet tilkoble disse computere til de ønskede shares og køre net-opdateringer af enhver art. Det skal ske ca. hvert minut det check. Prøv at forestille dig at man skal køre ipconfig hvert minut.

domi>Du havde helt ret i at man kan gøre det sådan, men i et professionelt netværk gør man ikke sådan noget. :)

/CoRex

Avatar billede ziron Nybegynder
30. august 2001 - 11:02 #7
corex >> på at se på dette:

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

Function ConnectionKind :boolean;
var
  flags: dword;
begin
  Result := InternetGetConnectedState(@flags, 0);
  if Result then
  begin
    if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
    begin
      Result := True;
    end
    else
    begin
      Result := False;
    end

  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
if  ConnectionKind = true then
Showmessage(\'der er netwærk\')
else
Showmessage(\'der er ikke netwærk\')
end;

end.


/ZIRON
Avatar billede mrcorex Nybegynder
30. august 2001 - 11:47 #8
ziron>Denne har jeg prøvet. Jeg kører W2K og hvis jeg tager lan-kablet ud af min klap-sammen PC og prøver igen, får jeg af vide at den stadig er connec\'tet. Hmmm.

/CoRex
Avatar billede ziron Nybegynder
30. august 2001 - 11:52 #9
okay 2 sek. så laver jeg lige lidt sjov...

/ZIRON
Avatar billede ziron Nybegynder
30. august 2001 - 12:15 #10
sådan så prøv dette af hvad jeg lige har prøvet på min egen, så vikker det meget fint:

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

function LocalIP : String;
type
  TArrayPInAddr = array [0..10] of PInAddr;
  PArrayPInAddr = ^ TArrayPInAddr;
  var
  phe      : PHostEnt;
  pptr    : PArrayPInAddr;
  Buffer  : array [0..63] of char;
  i        : integer;
  GInitData: TWSADATA;
begin
  WSAStartup($101, GInitData);
  result := \'\';
  GetHostName(Buffer, sizeof(Buffer));
  phe := GetHostByName(Buffer);
  if phe=nil then
  begin
    exit
  end;
  pptr := PArrayPInAddr(phe^.h_addr_list);
  i := 0;
  while pptr^[i]<>nil do
  begin
    result := StrPas(inet_ntoa(pptr^[i]^));
    Inc(i);
  end;
  WSACleanup;
end;

Function ConnectionKind :boolean;
var
  flags: dword;
begin
  Result := InternetGetConnectedState(@flags, 0);
  if Result then
  begin
    if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
    begin
      Result := True;
    end
    else
    begin
      Result := False;
    end

  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if  ConnectionKind = true then
    begin
      if LocalIP = \'127.0.0.1\' then
        begin
          Showmessage(\'der er ikke netwærk\')
        end
      else
        begin
          ShowMessage(\'der er netwærk\');
      end
    end
  else
    begin
      Showmessage(\'der er ikke netwærk\')
  end;
end;

end.

/ZIRON
Avatar billede mrcorex Nybegynder
30. august 2001 - 12:48 #11
For hulen! Den havde jeg ikke tænkt på at det var Microsofts Loop Back Driver der spillede ind.

Jeg har lige smidt 40 point mere på til dig som tak for hjælpen.

/CoRex
Avatar billede ziron Nybegynder
30. august 2001 - 12:50 #12
jamen det var da så lidt og håber du kunne bruge det. og jeg takker for point :-)

/ZIRON

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester