Avatar billede kingguro Nybegynder
26. maj 2001 - 14:49 Der er 7 kommentarer og
1 løsning

Netværk søgning?

Hvordan kan jeg søge på hvilke computere som sidder i det lokale netværk. Og få tilbagesendt deres IP og deres computer navn?
Avatar billede illi Nybegynder
26. maj 2001 - 14:51 #1
søg efter computer i start menuen...
altså gå ind i START > søg > filer eller mapper > og vælg derefter computere...
/Rasmus
Avatar billede bwinkel Nybegynder
26. maj 2001 - 14:53 #2
Mon ikke kingguro er ude efter en programnbid der kan udføre funktionen, når man nu kiger på hvilken kategori han har postet den i.
Avatar billede bwinkel Nybegynder
26. maj 2001 - 14:54 #3
Det var dog utroligt som det her keyboard staver....programnbid 0 programbid og kiger =kigger
Avatar billede kaspikov Nybegynder
26. maj 2001 - 14:57 #4
Prøv det her:

http://members.xoom.com/_XMCM/helpfile/components/neighborhood/Neighborhood.zip

Du skal rette følgende i koden:

procedure TForm1.btnPrevClick(Sender: TObject);
begin
  Neighborhood1.PreviousComputer;
  lblName.Caption := Neighborhood1.GetComputerName;
  GetShare;
end;
procedure TForm1.btnFirstClick(Sender: TObject);
begin
  Neighborhood1.ResetComputer;
  lblName.Caption := Neighborhood1.GetComputerName;
  GetShare;
end;

Casper
Avatar billede kingguro Nybegynder
26. maj 2001 - 16:48 #5
Jeg tænke nu mere på noget \"gør det selv kode\"!!!
Avatar billede kaspikov Nybegynder
26. maj 2001 - 17:53 #6
Jeg har kun kode noget der dur under 95/98!

Casper

p.s. Men stadig gør det selv.
Avatar billede kaspikov Nybegynder
26. maj 2001 - 17:54 #7
Ellers så kan du lave et serverprogram der kører på en fast computer og en klient der \"logger\" på din server. Derefter sender serveren så til de klienter der er logget på, en liste med dem der er på netværket.

For at få det til at du skal du altså have en \"server\" på f.eks 192.168.1.1, når dine maskiner(klienter) på netværket så starter op, starter programmet der sender en besked til serveren og modtager så listen fra serveren.

Interesseret? så burde der falde flere point af! det er trods alt et helt program. :)

Casper
Avatar billede borrisholt Novice
28. maj 2001 - 17:56 #8
sæt en TreeView kontrol og et memofelt på en form. Giv formen et onClick event og dit TreeView et OnClick event.

Så skulle det følgende kode løse problemet for dig :

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    TreeView: TTreeView;
    Memo1: TMemo;
    procedure TreeViewClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


const InitialSize = $1;  // Any positive value is acceptable.

type
    TNetEnumThread = class(TThread)
        ChildNode: PChar;
        TreeNode: TTreeNode;
        procedure AddChildNode;
        procedure Execute; override;
        procedure LoadNetNode(NodeName: PChar; NetNode: PNetResourceA);
    end;

procedure TNetEnumThread.Execute;
begin
  TreeNode:=nil;
  LoadNetNode(nil,nil);
end;

procedure TNetEnumThread.AddChildNode;
begin
  TreeNode:=Form1.TreeView.Items.AddChild(TreeNode,StrPas(ChildNode));
end;

procedure TNetEnumThread.LoadNetNode(NodeName: PChar; NetNode: PNetResourceA);
var hEnum : THandle;
    Count,BufSize: DWORD;
    NR,Buf: PNetResourceA;
    R: Integer;
    CurrentNode: TTreeNode;
begin
    R:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,NetNode,hEnum);

    if R <> NO_ERROR then
      exit;

    BufSize:=InitialSize;
    GetMem(Buf,BufSize);
    try
        while True do
        begin
            Count:=$FFFFFFFF; // I wish to read ALL items
            R:=WNetEnumResource(hEnum,Count, Buf, BufSize);

            if R = ERROR_MORE_DATA then // Oops ! The InitialSize is too small !
            begin
              Count:=$FFFFFFFF; // I wish to read ALL items
              FreeMem(Buf);
              GetMem(Buf,BufSize);
              R:=WNetEnumResource(hEnum,Count, Buf, BufSize);
            end;

            if R = ERROR_NO_MORE_ITEMS then
              Break; // All items are processed

            if R <> NO_ERROR then
              Abort; // R is the error code. Process it!

            NR:=Buf;

            while Count > 0 do
            begin
              CurrentNode:=TreeNode;
              ChildNode:=NR.lpRemoteName;
              Synchronize(AddChildNode);
              LoadNetNode(ChildNode, NR);
              TreeNode:=CurrentNode;
              inc(NR);
              dec(Count);
              count := 0;
            end;
        end;
    finally
        WNetCloseEnum(hEnum);
        FreeMem(Buf);
    end;
end;

procedure TForm1.TreeViewClick(Sender: TObject);
  function GetIP (Buffer : PChar): string;
  type
    TaPInAddr = array [0..10] of PInAddr;
    PaPInAddr = ^TaPInAddr;
  var
    phe : PHostEnt;
    pptr : PaPInAddr;
  //  Buffer : array [0..63] of char;
    I : Integer;
    GInitData : TWSADATA;
  begin
    WSAStartup($101, GInitData);
    Result := \'\';
    GetHostName(Buffer, strlen(Buffer));
    phe :=GetHostByName(buffer);
    if phe = nil then
      Exit;

    pptr := PaPInAddr(Phe^.h_addr_list);
    I := 0;
    while pptr^[I] <> nil do
    begin
      result:=StrPas(inet_ntoa(pptr^[I]^));
      result := StrPas(inet_ntoa(pptr^[I]^));
      Inc(I);
    end;

    WSACleanup;
  end;

var
  TreeNode: TTreeNode;
  TmpText : String;
  i : Integer;
begin
  TreeNode := TreeView.Selected;

  if TreeNode = nil then
    exit;

  Memo1.Lines.Clear;

  TmpText := TreeNode.Text;

  if pos(\'\\\',TmpText) = 0 then
    exit;

  Memo1.Clear;

  Delete (TmpText,1,2);

  i := pos(\'\\\',TmpText);

  if i <> 0 then
    TmpText := copy(TmpText,1,i-1);

  Memo1.Lines.Add(\'Computername :\' + TmpText);
  Memo1.Lines.Add(\'Remote IP :\' + GetIp(pointer(TmpText)));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TNetEnumThread.Create(False);
end;

end.

Jens B
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