[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    >
    > I am writing a program which will extract PC information and store it in
    > a database.  The program will be run by each PC in my office and will
    > return Computername, Username  ...etc..  The program is working fine
    > except I am unable to find out what the TCP/IP address of the PC running
    > the App.  I am using Delphi1 and the program will be run on both Win3.11
    > and Win95 PC's.
    >
    > Any help would be greatly appreciated.
    >
    > Also the Ethernet address of the card would be handy as well (if its
    > possible to read)
    >
    > Thanks in advance,
    >
    > Jason Atkins
    > Sydney, Australia
    >
    > email:  jatkins@awa.com.au

    In Delphi 2 and Windows 95 I tested the code below and it works.
    Notice that I have included WinSock in the uses clause. Delphi 2 comes with
    winsock.dcu but I believe that Delphi 1 does not have it.
    Search the Delphi Super Page (http://sunsite.icm.edu.pl/delphi/),
    probably there will be useful sockets/TCPIP components that will help you.

    Code follows...
    -----------------------------------------
    unit Unit1;

    interface

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

    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.FormShow(Sender: TObject);
    type pu_long = ^u_long;
    var varTWSAData : TWSAData;
        varPHostEnt : PHostEnt;
        varTInAddr : TInAddr;
        namebuf : Array[0..255] of char;
    begin
      If WSAStartup($101,varTWSAData) <> 0 Then
        Edit1.Text := 'WSAStartup error!'
      Else Begin
        gethostname(namebuf,sizeof(namebuf));
        varPHostEnt := gethostbyname(namebuf);
        varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
        Edit1.Text := inet_ntoa(varTInAddr);
      End;
      WSACleanup;
    end;

    end.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]