易语言调用api枚举网卡名称并且获取信息的代码

DLL命令表

.版本 2
.DLL命令 GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址
  .参数 hModule, 整数型
  .参数 lpProcName, 文本型
.DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
  .参数 lpModuleName, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 IsBadCodePtr, 整数型, "kernel32", "IsBadCodePtr", , 确定读指针的合法性
  .参数 lpfn, 整数型
.DLL命令 LoadLibrary, 整数型, "kernel32", "LoadLibraryA", , 载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源 成功则返回库模块的句柄,零表示失败。会设置GetLastError
  .参数 lpLibFileName, 文本型, , 指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序;

常量数据表

.版本 2
.常量 ERROR_BUFFER_OVERFLOW, "111", , 111
.常量 ERROR_SUCCESS, "0", , 0L
.常量 MIB_IF_TYPE_ETHERNET, "6", , 以太网接口
.常量 MIB_IF_TYPE_FDDI, "15", , 15
.常量 MIB_IF_TYPE_LOOPBACK, "24", , 24
.常量 MIB_IF_TYPE_OTHER, "1", , 其他类型的网络接口
.常量 MIB_IF_TYPE_PPP, "23", , PPP(点到点协议)网络接口
.常量 MIB_IF_TYPE_SLIP, "28"
.常量 MIB_IF_TYPE_TOKENRING, "9"
.常量 MIB_IF_TYPE_IEEE80211, "71", , IEEE 802.11 wireless network interface
.常量 ERROR_INSUFFICIENT_BUFFER, "122", , 122

获取网卡的IP地址、MAC等信息代码

.版本 2
.程序集 网卡操作程序集
.子程序 彗星取网卡信息, 整数型, 公开, 获取网卡的IP地址、MAC等信息。
.参数 网卡信息数组, NetworkCardInfo, 参考 数组
.局部变量 MapList, NetworkCardMapName, , "0"
.局部变量 AdapterInfo, IP_ADAPTER_INFO
.局部变量 BufBin, 字节集
.局部变量 pAda, 整数型
.局部变量 nSize, 整数型
.局部变量 nBufLen, 整数型
.局部变量 nResult, 整数型
.局部变量 pAddr, 整数型
.局部变量 ipAddr, IP_ADDR_STRING
.局部变量 strTmp, 文本型
.局部变量 strMac, 文本型
.局部变量 Card, NetworkCardInfo
.局部变量 i, 整数型
清除数组 (网卡信息数组)
GetAdapterFriendlyName (MapList)
' //--------------------------------------------------
nResult = GetAdaptersInfo_Ptr (0, nBufLen)
.如果真 (nResult = #ERROR_BUFFER_OVERFLOW)
  BufBin = 取空白字节集 (nBufLen)
  pAda = GetPtr_Bin (BufBin, BufBin, 0)
  nResult = GetAdaptersInfo_Ptr (pAda, nBufLen)
  .如果真 (#ERROR_SUCCESS = nResult)
    nSize = LocalSize_IP_ADAPTER_INFO (AdapterInfo)
    .判断循环首 (pAda ≠ 0)
      CopyMemory_P2IP_ADAPTER_INFO (AdapterInfo, pAda, nSize)
      Card.strName = 到文本 (AdapterInfo.AdapterName) ' //网卡名称
      Card.strDescription = 到文本 (AdapterInfo.Description) ' //网卡描述
      Card.nType = AdapterInfo.Type ' //网卡类型
      Card.strType = GetAdapterInfoType (AdapterInfo.Type)
      ' //取出MAC地址
      Card.strMac = “”
      .计次循环首 (AdapterInfo.AddressLength - 1, i)
        .如果真 (i > 1)
          Card.strMac = Card.strMac + “-”
        .如果真结束
        .如果真 (AdapterInfo.Address [i] ≤ 16)
          Card.strMac = Card.strMac + “0”
        .如果真结束
        Card.strMac = Card.strMac + 取十六进制文本 (AdapterInfo.Address [i])
      .计次循环尾 ()
      ' //取出IP地址和子网掩码
      ipAddr = AdapterInfo.IpAddressList
      .循环判断首 ()
        Card.strIP = 到文本 (ipAddr.IpAddress)
        Card.strMask = 到文本 (ipAddr.IpMask)
        跳出循环 () ' //只取一个
        pAddr = ipAddr.Next
        .如果真 (pAddr ≠ 0)
          CopyMemory_IP_ADDR_STRING (ipAddr, pAddr, LocalSize_IP_ADDR_STRING (ipAddr))
        .如果真结束
      .循环判断尾 (pAddr ≠ 0)
      ' //取出
      ipAddr = AdapterInfo.GatewayList
      .循环判断首 ()
        Card.strGateway = 到文本 (ipAddr.IpAddress)
        跳出循环 ()
        pAddr = ipAddr.Next
        .如果真 (pAddr ≠ 0)
          CopyMemory_IP_ADDR_STRING (ipAddr, pAddr, LocalSize_IP_ADDR_STRING (ipAddr))
        .如果真结束
      .循环判断尾 (pAddr ≠ 0)
      ' //取出DNS服务器
      GetDnsServer (AdapterInfo.Index, Card.strDNS1, Card.strDNS2)
      ' //--------------------------------------------------
      .计次循环首 (取数组成员数 (MapList), i)
        .如果真 (MapList [i].strGUID = Card.strName)
          Card.strFriendName = MapList [i].strFriendName
          跳出循环 ()
        .如果真结束
      .计次循环尾 ()
      ' //--------------------------------------------------
      加入成员 (网卡信息数组, Card)
      pAda = AdapterInfo.Next
    .判断循环尾 ()
  .如果真结束
.如果真结束
' //--------------------------------------------------
返回 (取数组成员数 (网卡信息数组))
.子程序 GetAdapterFriendlyName, , , 通过mprapi库获取连接名称
.参数 MapList, NetworkCardMapName, 数组
.局部变量 hMprConfig
.局部变量 dwBufferSize
.局部变量 BufferBin, 字节集
.局部变量 plfTable, 整数型
.局部变量 FaceInfo, IP_INTERFACE_INFO
.局部变量 Adapter, IP_ADAPTER_INDEX_MAP, , "0"
.局部变量 szMapName, 字节集
.局部变量 szFriendName, 字节集
.局部变量 nSize, 整数型
.局部变量 dwRet
.局部变量 i, 整数型
.局部变量 nPos, 整数型
清除数组 (MapList)
' //-----------------------------------------------------------
dwRet = MprConfigServerConnect (0, hMprConfig) ' //获得句柄
dwRet = GetInterfaceInfo (0, dwBufferSize) ' //获得接口信息表大小
.如果真 (dwRet = #ERROR_INSUFFICIENT_BUFFER)
  BufferBin = 取空白字节集 (dwBufferSize)
  plfTable = GetPtr_Bin (BufferBin, BufferBin, 0)
  dwRet = GetInterfaceInfo (plfTable, dwBufferSize) ' //获得接口信息
  nSize = LocalSize_IP_INTERFACE_INFO (FaceInfo)
  CopyMemory_P2IP_INTERFACE_INFO (FaceInfo, plfTable, nSize)
  .如果真 (FaceInfo.NumAdapters > 0)
    重定义数组 (Adapter, 假, FaceInfo.NumAdapters)
    nSize = FaceInfo.NumAdapters × LocalSize_IP_ADAPTER_INDEX_MAP (Adapter [1])
    .如果真 (nSize > dwBufferSize)
      nSize = dwBufferSize
    .如果真结束
    CopyMemory_P2IP_ADAPTER_INDEX_MAP_Array (Adapter, plfTable + 4, nSize)
    重定义数组 (MapList, 假, FaceInfo.NumAdapters)
    .计次循环首 (FaceInfo.NumAdapters, i)
      szMapName = 到字节集 (Adapter [i].Name)
      szFriendName = 取空白字节集 (256)
      MprConfigGetFriendlyName (hMprConfig, szMapName, szFriendName, 255)
      MapList [i].Index = Adapter [i].Index
      MapList [i].strMapName = W2A (szMapName)
      MapList [i].strFriendName = W2A (szFriendName)
      MapList [i].strGUID = MapList [i].strMapName
      nPos = 寻找文本 (MapList [i].strGUID, “{”, , 假)
      .如果真 (nPos ≠ -1)
        MapList [i].strGUID = 取文本右边 (MapList [i].strGUID, 取文本长度 (MapList [i].strGUID) - nPos + 1)
      .如果真结束
    .计次循环尾 ()
  .如果真结束
.如果真结束
.子程序 GetDnsServer, 逻辑型, , 通过GetPerAdapterInfo获取指定网卡的DNS服务器
.参数 nIndex, 整数型, , IP_ADAPTER_INFO.Index
.参数 strDNS1, 文本型, 参考, 首选DNS服务器
.参数 strDNS2, 文本型, 参考, 备用DNS服务器
.局部变量 PerAdapterInfo, IP_PER_ADAPTER_INFO
.局部变量 BufBin, 字节集
.局部变量 pAda, 整数型
.局部变量 nSize, 整数型
.局部变量 nBufLen, 整数型
.局部变量 nResult, 整数型
.局部变量 pAddr, 整数型
.局部变量 ipAddr, IP_ADDR_STRING
.局部变量 nCount, 整数型
strDNS1 = “”
strDNS2 = “”
' //--------------------------------------------------
nResult = GetPerAdapterInfo_Ptr (nIndex, 0, nBufLen)
.如果真 (nResult = #ERROR_BUFFER_OVERFLOW)
  BufBin = 取空白字节集 (nBufLen)
  pAda = GetPtr_Bin (BufBin, BufBin, 0)
  nResult = GetPerAdapterInfo_Ptr (nIndex, pAda, nBufLen)
  .如果真 (#ERROR_SUCCESS = nResult)
    nSize = LocalSize_IP_PER_ADAPTER_INFO (PerAdapterInfo)
    CopyMemory_P2IP_PER_ADAPTER_INFO (PerAdapterInfo, pAda, nSize)
    ipAddr = PerAdapterInfo.DnsServerList
    .循环判断首 ()
      nCount = nCount + 1
      .判断开始 (nCount = 1)
        strDNS1 = 到文本 (ipAddr.IpAddress)
      .判断 (nCount = 2)
        strDNS2 = 到文本 (ipAddr.IpAddress)
      .默认
      .判断结束
      pAddr = ipAddr.Next
      .如果真 (pAddr ≠ 0)
        CopyMemory_IP_ADDR_STRING (ipAddr, pAddr, LocalSize_IP_ADDR_STRING (ipAddr))
      .如果真结束
    .循环判断尾 (pAddr ≠ 0)
    返回 (真)
  .如果真结束
.如果真结束
' //--------------------------------------------------
返回 (假)
.子程序 GetAdapterInfoType, 文本型
.参数 nType, 整数型
.判断开始 (nType = #MIB_IF_TYPE_OTHER)
  返回 (“OTHER”)
.判断 (nType = #MIB_IF_TYPE_ETHERNET)
  返回 (“ETHERNET”)
.判断 (nType = #MIB_IF_TYPE_TOKENRING)
  返回 (“TOKENRING”)
.判断 (nType = #MIB_IF_TYPE_FDDI)
  返回 (“FDDI”)
.判断 (nType = #MIB_IF_TYPE_PPP)
  返回 (“PPP”)
.判断 (nType = #MIB_IF_TYPE_LOOPBACK)
  返回 (“LOOPBACK”)
.判断 (nType = #MIB_IF_TYPE_SLIP)
  返回 (“SLIP”)
.判断 (nType = #MIB_IF_TYPE_IEEE80211)
  返回 (“IEEE80211”)
.默认
  返回 (到文本 (nType))
.判断结束

初始化模块的代码

.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
载入 (窗口1, , 假)
返回 (0)
.子程序 A2W, 字节集
.参数 MultiByteStr, 文本型, 参考
.局部变量 len, 整数型
.局部变量 Returned, 字节集
len = MultiByteToWideChar (0, 0, MultiByteStr, -1, { }, 0)
Returned = 取空白字节集 ((len + 1) × 2)
MultiByteToWideChar (0, 0, MultiByteStr, -1, Returned, 取字节集长度 (Returned))
返回 (Returned)
.子程序 W2A, 文本型
.参数 CharStr, 字节集
.局部变量 len, 整数型
.局部变量 Returned, 文本型
len = WideCharToMultiByte (1, 0, CharStr, -1, 字符 (0), 0, 字符 (0), 假)
Returned = 取空白文本 (len)
WideCharToMultiByte (1, 0, CharStr, -1, Returned, 取文本长度 (Returned), 字符 (0), 假)
返回 (Returned)

取网卡信息的代码

.版本 2
.支持库 iext
.程序集 窗口程序集_窗口1
.子程序 _窗口1_创建完毕
.局部变量 网卡信息数组, NetworkCardInfo, , "0"
.局部变量 网卡数量, 整数型
.局部变量 网卡名称, 文本型
.局部变量 i, 整数型
.局部变量 x, 整数型
树型框1.清空 ()
网卡数量 = 彗星取网卡信息 (网卡信息数组)
.计次循环首 (取数组成员数 (网卡信息数组), i)
  网卡名称 = “网卡” + 到文本 (i) + “ ” + 网卡信息数组 [i].strFriendName
  x = 树型框1.加入项目 (-1, 网卡名称, 0, 0, , , )
  树型框1.加入项目 (x, “连接名称:” + 网卡信息数组 [i].strFriendName, , , , , )
  树型框1.加入项目 (x, “网卡名称:” + 网卡信息数组 [i].strName, , , , , )
  树型框1.加入项目 (x, “网卡描述:” + 网卡信息数组 [i].strDescription, , , , , )
  树型框1.加入项目 (x, “网卡类型:” + 网卡信息数组 [i].strType, , , , , )
  树型框1.加入项目 (x, “MAC地址:” + 网卡信息数组 [i].strMac, , , , , )
  树型框1.加入项目 (x, “IP地址:” + 网卡信息数组 [i].strIP, , , , , )
  树型框1.加入项目 (x, “子网掩码:” + 网卡信息数组 [i].strMask, , , , , )
  树型框1.加入项目 (x, “网关地址:” + 网卡信息数组 [i].strGateway, , , , , )
  树型框1.加入项目 (x, “首选DNS:” + 网卡信息数组 [i].strDNS1, , , , , )
  树型框1.加入项目 (x, “备用DNS:” + 网卡信息数组 [i].strDNS2, , , , , )
  树型框1.扩展 (x)
.计次循环尾 ()

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言调用百度API获取IP归属地的代码

    常量据表 .版本 2 .常量 查ip地址, "<文本长度: 17>", , {"code":0,"data": 调用百度api获取ip归属地的代码 此功能需要加载精易模块5.6 .版本 2 .程序集 窗口程序集_启动窗口 .子程序 取IP归属地_百度API, 文本型, 公开 .参数 IP地址, 文本型 .局部变量 Json, 类_json .局部变量 返回数据, 文本型 .局部变量 地区, 文本型 CoInitialize (0) 返

  • 易语言调用百度api识别是否为色情图片的代码

    调用百度云色情图片识别的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 _识别按钮_被单击 百度云色情识别 () .子程序 百度云色情识别 .局部变量 类_XMLHTTP, 类_XMLHTTP .局部变量 Accesss_token, 文本型 .局部变量 str, 文本型 Accesss_token = GetAccesss_token () 类_XMLHTTP.打开 ("POST", "https://aip.b

  • 易语言调用SetClipboardViewer的api实现剪贴版的内容监控

    DLL命令表 .版本 2 .DLL命令 加入剪贴板监视链_d, 整数型, "user32.dll", "SetClipboardViewer", 公开, 成功,返回值将标识剪贴板查看器链中的下一个窗口.如果出现错误或剪贴板查看器链中没有其他窗口,则返回值为空.( hwndNextViewer 将为 NULL.) .参数 窗口句柄, 整数型, , hwnd 加入剪切板监视链中窗口句柄 .DLL命令 设置窗口信息_d, 整数型, "user32",

  • 易语言API高级技巧教学

    首先声明,本文的读者该卖是:具有相当的易言语基础的.能较熟练地把常用的的API从VB/C声明转换到易言语DLL命令的易言语喜欢者. 1,使用指针 易言语中出于安定.方便考虑,没有直接提供指针,这正在进行一些高级 纵时不是很方便,固然有一些第三方支撑库可以取出变量指针(比如我的eLib++ 注:该支撑库系Delphi开发,本人已开放源代 ,你可以到易言语下载区瞧瞧)但是仅仅为了这个 纵就带上一个支撑库不太值得.实在用一个API,加上一些技术就可以欺骗Windows和易言语,让它们报告你一个变量的指

  • 易语言统计代码行数与API的工具

    DLL命令表 .版本 2 .DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA", , 在窗口列表中寻找与指定条件相符的第一个子窗口 找到的窗口的句柄.如未找到相符窗口,则返回零.会设置GetLastError .参数 hWnd1, 整数型, , 在其中查找子的父窗口.如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找) .参数 hWnd2, 整数型, , 从这个窗口后开始查找.

  • 易语言调用API函数监视目录与文件的代码

    DLL命令表 .版本 2 .DLL命令 GetPrivateProfileInt, 整数型, , "GetPrivateProfileIntA" .参数 lpAppName, 文本型 .参数 lpKeyName, 文本型 .参数 nDefault, 整数型 .参数 lpFileName, 文本型 .DLL命令 GetPrivateProfileString, 整数型, , "GetPrivateProfileStringA" .参数 lpAppName, 文本型 .

  • 易语言调用api获取网卡信息网络连接名的代码

    DLL命令表 .版本 2 .DLL命令 GetAdaptersInfo, 整数型, "IPHlpApi" .参数 IpAdapterInfo, 字节集 .参数 pOutBufLen, 整数型, 传址 .DLL命令 取变量地址_字节集, 整数型, , "lstrcpynA" .参数 变量, 字节集, 传址 .参数 变量, 字节集, 传址 .参数 保留, 整数型, , 0 .DLL命令 CopyMemory_iai, , "kernel32", &q

  • 易语言调用api实现文件拖放获取路径的代码

    拖放文件支持任意版本Windows系统 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 文件拖放类, 文件拖放 .子程序 __启动窗口_创建完毕 .局部变量 拖放处理, 子程序指针 文件拖放类.注册拖放 (_启动窗口.取窗口句柄 (), &拖放处理) proc_FilterMsg () .子程序 拖放处理 .参数 总文件数量, 整数型 .参数 当前是第几个文件, 整数型 .参数 当前的文件名, 文本型 .参数 当前的文件类型, 文本型

  • 易语言调用api枚举网卡名称并且获取信息的代码

    DLL命令表 .版本 2 .DLL命令 GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 .参数 hModule, 整数型 .参数 lpProcName, 文本型 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄

  • 易语言调用TTS语音模块实现文字转换语音功能的代码

    DLL命令表 .版本 2 .DLL命令 CoInitialize, 整数型, "ole32.dll", "CoInitialize" .参数 pvReserved, 整数型 .DLL命令 CoUninitialize, , "Ole32.dll", "CoUninitialize", , 在当前线程,关闭COM库,卸载所有加载的DLL的线程,释放线程保持的任何其他资源,并强制关闭所有的线程上的RPC连接. 利用系统自带的TTS

  • 易语言调用whois实现域名批量查询与注册的代码

    域名批量查询注册与whois查询的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 EThread .程序集 窗口程序集_启动窗口 .子程序 _批量查询_被单击 启动线程 (&查询是否可以注册, , ) .子程序 查询是否可以注册 .局部变量 xml, 文本型 .局部变量 域名数组, 文本型, , "0" .局部变量 计次, 整数型 批量查询.禁止 = 真 批量查询.标题 = "正在查询..." 域名数组 = 分割文本 (删首尾空 (批量域名.内容)

  • 易语言调用易模块的方法

    易模块就是,易语言前辈把一些函数.常用的子程序. 编辑起来,方便新手学习! 1.打开易语言,里面,窗口程序.控制程序.动态连接库.易语言模块. 这里面可以用到模块的有[窗口程序.控制程序.动态连接库.]易语言模块是编写易模块的程序. 2.我们就以窗口程序程序进行操作,点击进入[双击]. 进入设计面板,点击[程序],在点击[模块引用],然后[添加模块] 1.使用方法 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 2.在打开易语言模块信息

  • 详解易语言调用js实现md5加密方法

    易语言调用js需要用到拓展组件的脚本组件, 在窗口创建完毕的事件里给脚本组件初始化设置下脚本组件的语言属性,在这里以JScript为例: 脚本组件执行脚本的简单方法是:  脚本组件1.执行 ()  然后根据需要调用的脚本函数   脚本组件1.运行 () 首先看下脚本组件1.执行 () 的参数和返回值: 调用格式: 〈逻辑型〉 对象.执行 (文本型 脚本代码) - 脚本语言支持组件->脚本组件 英文名称:Execute 执行指定的代码文本.返回真为执行正常,返回假为出错,错误信息可以从"错误

  • C++ 编写DLL文件给易语言调用方法

    摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEMO_H_ #define _DLL_DEMO_H_ #ifdef DLLDEMO_EXPORTS #define DLL_DEMO extern "C" __declspec(dllexport) #else #define DLL_DEMO extern "C" __

  • 易语言调用JS取随机数

    易语言自带的取随机数,取小范围的数字还行,大了就不行了,后面的根本取不到,所以我们需要借且JS来取随机数 1.启动易语言新建一个空白的程序或者模块都可以 2.双击界面,进入代码编辑,在代码界面新建一个子程序,修改为子程序_取随机数_JS 3.让鼠标指针放在上面,按回车添加2个整数型参数,分别命名为[起始值][终止值] 4.可以把公开勾上,这样可以复制到模块里面进行调用.第一个参数[起始值]设置为可空,如果没有传入参数,默认就是为0 5.添加其他JS代码,完成编写,纯代码在最后,直接复制到易语言界

随机推荐