⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 network.pas

📁 改进的Hardware检测代码
💻 PAS
字号:
unit NetWork;

interface

uses Windows, SysUtils, Nb30, Winsock;

function GetUserName: string;
//获取计算机名函数
function GetHostName: string;
//获取计算机IP函数:
function GetHostIP: string;
function GetAdapterMac(ANo: Integer): string;

implementation

function GetUserName: string;
var
    UserName: array[0..128] of char;
    dwSize: DWORD;
begin
    result := '';
    Windows.GetUserName(UserName, dwSize); //szUserName就是本机用户名.
    Result := StrPas(UserName);
end;


//获取计算机名函数

function GetHostName: string;
var
    ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of char;
    Size: Cardinal;
begin
    result := '';
    Size := MAX_COMPUTERNAME_LENGTH + 1;
    GetComputerName(ComputerName, Size);
    Result := StrPas(ComputerName);
end;


//获取计算机IP函数:

function GetHostIP: string;
var
    WSAData: TWSAData;
    HostEnt: PHostEnt;
begin
    result := '';
    WSAStartup(2, WSAData);
    HostEnt := GetHostByName(PChar(GetHostName));
    if HostEnt <> nil then
    begin
        with HostEnt^ do
            result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
    end;
    WSACleanup;
end;

function GetAdapterMac(ANo: Integer): string;
//获取网卡的MAC地址
var
    Ncb: TNcb;
    Adapter: TAdapterStatus;
    Lanaenum: TLanaenum;
    IntIdx: Integer; //
    cRc: Char;
    StrTemp: string;
begin
    Result := '';
    try
        ZeroMemory(@Ncb, SizeOf(Ncb));
        Ncb.ncb_command := Chr(NCbenum);
        NetBios(@NCb);
        Ncb.ncb_buffer := @Lanaenum; //再处理enum命令
        Ncb.ncb_length := SizeOf(Lanaenum);
        cRc := NetBios(@Ncb);
        if Ord(cRc) <> 0 then exit;
        ZeroMemory(@Ncb, SizeOf(Ncb)); //适配器清零
        Ncb.ncb_command := Chr(NcbReset);
        Ncb.ncb_lana_num := Lanaenum.lana[aNo];
        cRc := NetBios(@Ncb);
        if Ord(cRc) <> 0 then exit;
        //得到适配器状态
        ZeroMemory(@Ncb, SizeOf(Ncb));
        Ncb.ncb_command := Chr(NcbAstat);
        Ncb.ncb_lana_num := Lanaenum.lana[aNo];
        StrPcopy(Ncb.ncb_callname, '*');
        Ncb.ncb_buffer := @Adapter;
        Ncb.ncb_length := SizeOf(Adapter);
        NetBios(@Ncb);
        //将mac地址转换成字符串输出
        StrTemp := '';
        for IntIdx := 0 to 5 do
            StrTemp := StrTemp + IntToHex(Integer(Adapter.adapter_address[intIdx]), 2);
        Result := StrTemp;
    finally
    end;
end;

end.

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -