pedroalves Postado Maio 3, 2004 Denunciar Share Postado Maio 3, 2004 Caros colegas,Estou usando a função "GetMACAdress" para identificar o ID da placa de rede. Ela funciona bem, exceto quando executo minha aplicação no WINDOWS 2000.Alguém tem uma dica ???Agradeço desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Maio 3, 2004 Denunciar Share Postado Maio 3, 2004 Grande Pedro belezaolha é o seguinte.. eu também uso GetMacAddress mas no meu win 2000 server e funciona.. agora.. pode ser alguma falha .. se quiser postar a parta da unit onde esta a funça o a galera dá uma olhada para você abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest XinXanXun Postado Maio 3, 2004 Denunciar Share Postado Maio 3, 2004 uses NB30;function GetAdapterInfo(Lana: Char): String;var Adapter: TAdapterStatus; NCB: TNCB;begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBRESET); NCB.ncb_lana_num := Lana; if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := Lana; NCB.ncb_callname := '*'; FillChar(Adapter, SizeOf(Adapter), 0); NCB.ncb_buffer := @Adapter; NCB.ncb_length := SizeOf(Adapter); if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; Result := IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[5]), 2); end; function GetMACAddress: string;var AdapterList: TLanaEnum; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBENUM); NCB.ncb_buffer := @AdapterList; NCB.ncb_length := SizeOf(AdapterList); Netbios(@NCB); if Byte(AdapterList.length) > 0 then Result := GetAdapterInfo(AdapterList.lana[0]) else Result := 'mac not found'; end; // usageprocedure TForm1.Button1Click(Sender: TObject);begin ShowMessage(GetMACAddress);end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pedroalves Postado Maio 4, 2004 Autor Denunciar Share Postado Maio 4, 2004 Caros colegas, obrigado pela atenção.Amigo Belomaster, estou usando o procedimento parecido com o do nosso colega XinXanXun. Segue abaixo:Uses NB30;procedure TfrmSenha.GeraNum;var Numero: string;Begin { quando é no Win 2000, a função retorna string vazia } Numero := GetMACAdress;End;{ Retorna o ID Físico da Placa de Rede }function GetMACAdress: string;var NCB: PNCB; Adapter: PAdapterStatus; URetCode: PChar; RetCode: char; I: integer; Lenum: PlanaEnum; _SystemID: string; TMPSTR: string;begin Result := ''; _SystemID := ''; Getmem(NCB, SizeOf(TNCB)); Fillchar(NCB^, SizeOf(TNCB), 0); Getmem(Lenum, SizeOf(TLanaEnum)); Fillchar(Lenum^, SizeOf(TLanaEnum), 0); Getmem(Adapter, SizeOf(TAdapterStatus)); Fillchar(Adapter^, SizeOf(TAdapterStatus), 0); Lenum.Length := chr(0); NCB.ncb_command := chr(NCBENUM); NCB.ncb_buffer := Pointer(Lenum); NCB.ncb_length := SizeOf(Lenum); RetCode := Netbios(NCB); i := 0; repeat Fillchar(NCB^, SizeOf(TNCB), 0); Ncb.ncb_command := chr(NCBRESET); Ncb.ncb_lana_num := lenum.lana; RetCode := Netbios(Ncb); Fillchar(NCB^, SizeOf(TNCB), 0); Ncb.ncb_command := chr(NCBASTAT); Ncb.ncb_lana_num := lenum.lana; // Must be 16 Ncb.ncb_callname := '* '; Ncb.ncb_buffer := Pointer(Adapter); Ncb.ncb_length := SizeOf(TAdapterStatus); RetCode := Netbios(Ncb); //---- calc _systemId from mac-address[2-5] XOR mac-address[1]... if (RetCode = chr(0)) or (RetCode = chr(6)) then begin _SystemId := IntToHex(Ord(Adapter.adapter_address[0]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[1]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[2]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[3]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[4]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[5]), 2); end; Inc(i); until (I >= Ord(Lenum.Length)) or (_SystemID <> '00-00-00-00-00-00'); FreeMem(NCB); FreeMem(Adapter); FreeMem(Lenum); GetMacAdress := _SystemID;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 acho que se escreve assim oh GetMACAddress;Talvez seja por isso que o seu não funciona ... !!Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pedroalves Postado Maio 4, 2004 Autor Denunciar Share Postado Maio 4, 2004 Bolomaster, não deve ser este o problema pois o nome não importa, desde que a chamada esteja se referindo a função que voçê deseja.No meu caso eu chamei a minha função de: GetMACAdress, se eu mudar para GetMACAddress vou está chamando a mesma funçãoAgradeço pela boa intenção e continuo necessitando da sua ajuda e dos demais colegas.Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest XinXanXun Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 Bom, eu utilizo o windows 2000 professional c/ sp4 e a função que postei anteriormente funciona corretamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 Bom, eu utilizo o windows 2000 professional c/ sp4 e a função que postei anteriormente funciona corretamente. XinXanXun, não ta na hora de se cadastrar amigo? Experimenta! Experimenta! Experimenta! Experimenta! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest XinXanXun Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 Se não for pago, acho que vou me cadastrar como s3c, pois XinXanXun não tem nada a ver comigo. Valeu !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 Se não for pago, acho que vou me cadastrar como s3c, pois XinXanXun não tem nada a ver comigo. Valeu !!! Registre-se como quiser... depois da um toque pra galera.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest s3c Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 Já estava como s3c; é que tinha esquecido! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
pedroalves
Caros colegas,
Estou usando a função "GetMACAdress" para identificar o ID da placa de rede. Ela funciona bem, exceto quando executo minha aplicação no WINDOWS 2000.
Alguém tem uma dica ???
Agradeço desde já.
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.