请问怎样获取本机的MAC地址?

everlasting 2003-03-02 09:08:56
RT
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛人软件 2003-03-02
  • 打赏
  • 举报
回复
#include <nb30.h>


bool GetMAC(char *Mac)
{
AnsiString msg;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;

ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
char tmp[40];
Mac[0]='\0';
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios( &ncb );
if (uRetCode!=0)
{
strcat(Mac,"Init Error!");
return false;
}
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
strcpy((char *)ncb.ncb_callname, "*" );//这个"*"代表获得本机网卡地址,换成IP地址就可以获得局域网内其他机器的网卡地址。
ncb.ncb_buffer =(unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
if (uRetCode == 0 )
{
sprintf(Mac, "MAC=%02X%02X%02X%02X%02X%02X",
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5]);
return true;
}
else
{
strcat(Mac,"Unknown.");
return false;
}
}


void __fastcall TForm1::Button3Click(TObject *Sender)
{
char Mac[30];
GetMAC(Mac);
ShowMessage(Mac);
}

everlasting 2003-03-02
  • 打赏
  • 举报
回复
谢谢Libran!
我试完了就结贴
Libran 2003-03-02
  • 打赏
  • 举报
回复
#include "objbase.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TGUID guid;
WideChar WCLID[128];
int Start;
CoCreateGuid(&guid);
StringFromGUID2(guid,WCLID,sizeof(WCLID)/2);
Edit1->Text = WideCharToString(WCLID);
Start = Edit1->Text.Length()-12;
Edit2->Text = Edit1->Text.SubString(Start,12);
}

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧