例子:  http://www.applevb.com/lib/diskio.rar相关帖子:http://www.csdn.net/Expert/forum.asp?typenum=8&searchKeys=%D3%B2%C5%CC%D0%F2%C1%D0%BA%C5&roomid=3&author=&tabletype=now

解决方案 »

  1.   

    用网号
    type
    ASTAT =record
    adapt:TADAPTERSTATUS ;
    NameBuff:array[0..30] of TNameBuffer;
    end;
    New_byte=array[0..5] of byte;
    varNewByte:New_Byte;
    procedure TfrmMain.GetNetCardAddress;
    var
    ncb:^TNCB;
    AdapterList:^TLanaEnum;
    ret:Char;
    i,K:integer;
    Adapter:^ASTAT;
    textt:string;
    // pAdd:string;
    // m_byteAddressMySelf:string;
    // m_ctrlThisNetCard:TStrings;
    begin
    // m_ctrlThisNetCard:=TStringList.Create;
    getMem(ncb,sizeof(TNCB));
    getMem(AdapterList,sizeof(TLanaEnum));
    ncb^.ncb_command:=char(NCBENUM);
    Ncb^.ncb_buffer := pchar(AdapterList);
    Ncb^.ncb_length := sizeof(AdapterList);
    // ret :=Netbios(PNCB(ncb));
    Netbios(PNCB(ncb));
    if (Ncb^.ncb_retcode<>char(NRC_GOODRET)) then exit;
    For I:=0 to ord(AdapterList^.Length) do
    begin
    getmem(ncb,sizeof(TNCB));
    Ncb^.ncb_command := char(NCBRESET);
    Ncb^.ncb_lana_num := AdapterList.lana[i];
    if (Netbios(PNCB(Ncb)) <> char(NRC_GOODRET)) then exit;getmem(ncb,sizeof(TNCB));
    Ncb^.ncb_command := char(NCBASTAT);
    Ncb^.ncb_lana_num := AdapterList.lana[i];
    ncb^.ncb_callname:='*';getMem(Adapter,sizeof(Adapter^));
    Ncb^.ncb_buffer := pchar(Adapter);
    Ncb^.ncb_length := sizeof(Adapter^);ret:=Netbios(PNCB(Ncb));if (ret<> #0) then exit;
    for K:=0 to 5 do
    if(Adapter^.adapt.adapter_address[K]<>#0)then break;
    if(K>=6)then continue;
    textt:=format('%.02X %.02X %.02X %.02X %.02X %.02X',
    [ord(Adapter^.adapt.adapter_address[0]),
    ord(Adapter^.adapt.adapter_address[1]),
    ord(Adapter^.adapt.adapter_address[2]),
    ord(Adapter^.adapt.adapter_address[3]),
    ord(Adapter^.adapt.adapter_address[4]),
    ord(Adapter^.adapt.adapter_address[5])]);
    if(m_ctrlThisNetCard.items.IndexOf(textt)=LB_ERR)then
    m_ctrlThisNetCard.items.Add(textt);
    end;end;function TfrmMain.HextoDec(const Hex: string): integer;
    var
    I:integer;
    C:char;
    Value:integer;
    begin
    value:=0;
    For I:=1 to Length(Hex) do
    begin
    C:=Hex[I];
    if(C>='A') and (C<='F')then
    value:=Value*10+(ord(C)-ord('A')+10)
    else
    Value:=Value*10+(ord(C)-ord('0'));
    end;
    result:=Value;
    end;
    function TfrmMain.SetStringtobyte(var NewByte: New_byte;
    const SourceStr: string): boolean;
    var
    str,tmp:string;
    start,I:integer;
    begin
    try
    For I:=0 to 5 do
    NewByte[I]:=0;
    tmp:=Uppercase(SourceStr+' ');
    for I:=0 to 5 do
    begin
    start:=pos(' ',tmp);
    inc(start,-1);
    str:=copy(tmp,0,start);
    NewByte[I]:=HextoDec(str);
    tmp:=copy(tmp,start+1,length(tmp)-start);
    tmp:=trimLeft(tmp);
    end;
    result:=True;
    except
    result:=False;
    end;
    end;
      

  2.   

    To ChipHead(满脑袋芯片和程序的人) 
    如果用P4的序列号的话局限性太大<例子:  http://www.applevb.com/lib/diskio.rar
    这个例子也不可行,对于Win2000要求Admin权限。
      

  3.   

    我想关键是无法保证在Win9x/2000下都能正常读取。没有序列号的硬盘倒是次要的。找一个三星的硬盘也不是件容易事。