本帖最后由 宇智波·佐助 于 2015-2-20 12:47 编辑
关于Wlan API开发,看了很多文档,发现易语言在这方面没有详细的开发说明与接入。(可能跟Windows上的无线使用有关系)接下来我给大家大概说明一下,首先我们先认识一下,所需的几个API函数
‘ 打开无线网卡 WlanOpenHandle 参数 dwClientVersion:系统版本(分为Vista系统版本以上,对应值为2,Vista系统版本以下,对应值为1) pReserved:此参数在MSDN中也未介绍是什么意思,只能从字面上理解为保存,其值为0 pdwNegotiatedVersion:打开网卡后所返回的会话ID,在整个的操作操作中都需要次参数,这个值通常是最高版本支持的客户Duan和 服务器 phClientHandle:正常打开网卡后所返回的网卡句柄
‘ 枚举无线接口 WlanEnumIntefaces 参数 hClientHandle:通过打开网卡后所返回的网卡句柄 pReserved:很抱歉,此参数在MSDN中也未查找到是什么意思,在此我也不做任何的说明 ppInterfaceList:返回无线接口列表指针(因为易语言的关系只能通过传指针的方式,不然是返回一个WLAN_INTERFACE_INFO的数据结构,其中InterfaceGuid为无线网卡的GUID,strInterfaceDescription为无线网卡的描述,enum为无线网卡的状态)
‘ 获取保存下来的无线配置文件 WlanGetProfileList 参数 hClientHandle:通过打开网卡后所返回的网卡句柄 pInterfaceGuid:无线网卡的GUID(换句说就是无线网卡的物理地址) pReserved:同WlanOpenHandle中的pReserved一样,其值为0 ppProfileList:返回无线接口列表指针(因为易语言的关系只能通过传指针的方式,不然是返回一个WLAN_PROFILE_INFO的数据结构,,其中strProfileName为配置文件中的无线名称,dwFlags为一个标识位,其值为0) ‘ 刷新附近的无线网络 WlanScan 参数 hClientHandle:通过打开网卡后所返回的网卡句柄 pInterfaceGuid:无线网卡的GUID(换句说就是无线网卡的物理地址) pDot11Ssid:指定要扫描的网络SSID,此值是为空的,所以不用填写,即0就可以了 pIeData:一个包含信息探测的指针,此值的内容为空,所以不用填写,即0就可以了 pReserved:一个预览的值,为空
‘ 指定网卡获取附近无线网络信息 WlanGetAvailableNetworkList 参数 hClientHandle:通过打开网卡后所返回的网卡句柄 pInterfaceGuid:无线网卡的GUID(换句说就是无线网卡的物理地址) dwFlags:返回列表中的一组控制网络类型标志,我们设定为1(0x00000002),扫描所有的网络 pReserved:保留供将来使用 ppAvailableNetworkList:返回一个无线列表的指针(因为易语言的关系只能通过传指针的方式,不然是返回一个WLAN_AVAILABLE_NETWORK_LIST的数据结构,,其中strProfileNam为无线名称,wlanSignalQuality无线信号值,dot11Ssid_ucSSID为无线SSID,其他信息,大家自己查一下MSDN吧,因为开发需要我就翻译了这三个。)
介绍了这么多的API函数,我们接下来讲解一下源码 通过汇编的“83, 51, 192, 100, 139, 29, 24, 0, 0, 0, 100, 139, 13, 48, 0, 0, 0, 133, 201, 120, 12, 139, 137, 164, 0, 0, 0, 131, 249, 6, 114, 1, 64, 91, 139, 229, 93, 195 ”的机器码来判断系统版本是否为Vista版本以上或以下。通过WlanOpenHandle打开网卡获取到网卡句柄后,通过此句柄利用WlanEnumInterfaces函数获取到本地无线网卡列表。易语言的关系,我们只能通过指针方式利用RtlMoveMemory(内存拷贝)函数,内存数据复制到WLAN_INTERFACE_INFO结构中 此例子就是一个打开网卡的例子。剩下的我就不多说了,附上源码,大家学习一下吧。 源码下载 |