loongson 发表于 2010-6-2 17:02:05

在CVI平台,有什么办法可以获取本机的MAC地址。

请问:在CVI平台,有什么办法可以获取本机的MAC地址。
SDK平台下有没有获取MAC地址的函数?我没有查到。
期待中。。谢谢

cpubbs 发表于 2010-6-2 18:43:01

原贴地址:http://112183883.8tops.com/7CBBCF5FB98E4E5888026EC6E03DD57B_112183883

利用VBS脚本获取本机网卡MAC地址
摘自:原创 作者:十一狼

代码如下:

Dim mc,mo
Set mc=GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled=True Then
MsgBox "本机网卡MAC地址是: " & mo.MacAddress
Exit For
End If
Next

cpubbs 发表于 2010-6-2 18:43:55

以前LABVIEW区的lgh269兄弟以前说过,我才记起来,他做过类似的!然后在CVI中也可以使用同样的办法,用VBS做,将这些脚本写入文件,然后再运行就可以实现出来的!不过也要研究一下如何做才行!

cpubbs 发表于 2010-6-2 18:44:30

在LABVIEW中是用system exec.vi执行系统的指令,在CVI中也有相同的FP可以用的,可以这样使用,然后取取得的值返回就可以了!

cpubbs 发表于 2010-6-2 18:50:46



另一个方法可以用这个,我也是在网上查的:
原贴地址:http://hi.baidu.com/isbx/blog/item/7fcd5d60d78da1da8cb10d4c.html

VC下获得网卡MAC,IP等信息的最简单方法
2008-07-15 13:51

今天闲着无聊就想来做点试验,于是想到获得网卡的一些信息,开始网上狂搜,找到的方法都很麻烦,后来在一个Delphi技术网站发现一个简单方法,于是我将他代码翻译了一下,加入了一些其他的功能(他程序主要是获得MAC).下面详细介绍下方法.获得MAC:网上很多都是获得网卡信息然后在获得MAC,或者从注册表里读,不过这里介绍一个简单的方法用到一个API
RPC_STATUS RPC_ENTRY UuidCreateSequential(UUID* Uuid);
这个API可以获得MAC地址
他返回信息如下
RPC_S_OK                                     The call succeeded.
RPC_S_UUID_LOCAL_ONLY            The UUID is guaranteed to be unique to this computer only.
RPC_S_UUID_NO_ADDRESS         Cannot get Ethernet or token-ring hardware address for this computer.
正常返回是第一个 所以我们用下面的代码获得到MAC地址long rt;
UUID ui;
   char mac={0};
   CString temp;
   CString Mac;
   rt = UuidCreateSequential(&ui);
   if (rt == RPC_S_OK)
   {
         _itoa(ui.Data4,mac,16);
      _itoa(ui.Data4,mac,16);
      _itoa(ui.Data4,mac,16);
      _itoa(ui.Data4,mac,16);
      _itoa(ui.Data4,mac,16);
      _itoa(ui.Data4,mac,16);
   }
   for(int n=0;n<6;n++)
   {
      if (strlen(mac) == 1)
      {
             temp.Format("0%s",mac);
             strcpy(mac,temp);
      }
   }
   Mac.Format("%s.%s.%s.%s.%s.%s",mac,mac,mac,mac,mac,mac);
   SetDlgItemText(IDC_EDIT1,Mac); 这样就完成了第一个获得到MAC地址,至于为什么要循环一次是因为转成16进制以后是一位比如0.0.0.0.0.0但是MAC地址一般是16进制,所以是00所以加个0而已00.00.00.00.00.00下面是获得IP和主机名char name={0};
   CString ip;
hostent *addr;
   ::AfxSocketInit();
    if(gethostname(name,sizeof(name))==0)
    {
         if((addr=gethostbyname(name)) != NULL)
         {
            ip = inet_ntoa(*(in_addr*)*addr->h_addr_list);
         }
    }
   SetDlgItemText(IDC_EDIT2,name);
   SetDlgItemText(IDC_IPADDRESS1,ip); 这个原理很简单先获得主机名,然后通过主机名获得到对应的IP.
需要注意的是,开始需要引用
#i nclude <afxsock.h>
这样才可以正常获得主机名,
至于MAC需要使用到
Rpcrt4.dll
这个文件(系统目录下)
所以需要引用库和头文件
#i nclude "Rpcdce.h"
#pragma comment(lib,"Rpcrt4.lib")
这样这个最简单的获得MAC和IP以及主机名的程序就完成了.


loongson 发表于 2010-6-3 11:07:46

太感谢了,版主真是尽心尽力啊。
页: [1]
查看完整版本: 在CVI平台,有什么办法可以获取本机的MAC地址。