首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows WlanApi和Python C类型

Windows WlanApi和Python C类型
EN

Stack Overflow用户
提问于 2011-11-08 07:02:10
回答 2查看 1.1K关注 0票数 1

我正在做一个Windows上的强制门户项目。我已经写了这段代码(类似于this):

代码语言:javascript
复制
from ctypes import wintypes
import ctypes

WlanApi = ctypes.windll.wlanapi

hClientHandle = wintypes.HANDLE()
phClientHandle = ctypes.pointer(hClientHandle)
dwNegotiatedVersion = wintypes.DWORD()
pdwNegotiatedVersion = ctypes.pointer(dwNegotiatedVersion)
dwClientVersion = wintypes.DWORD()
dwClientVersion.value = 2L

rc = WlanApi.WlanOpenHandle(dwClientVersion, None, pdwNegotiatedVersion, phClientHandle)
print rc

class GUID(ctypes.Structure):
    _fields_ = [("Data1", wintypes.DWORD),
                ("Data2", wintypes.WORD),
                ("Data3", wintypes.WORD),
                ("Data4", wintypes.BYTE * 8)]

class WLAN_INTERFACE_INFO (ctypes.Structure):
    _fields_ = [('InterfaceGuid', GUID),
                ('strInterfaceDescription', wintypes.WCHAR * 256),
                ('isState', wintypes.????)]

class WLAN_INTERFACE_INFO_LIST(ctypes.Structure):
    _fields_ = [('dwNumberOfItems', wintypes.DWORD),
                ('dwIndex', wintypes.DWORD),
                ('InterfaceInfo', WLAN_INTERFACE_INFO * 10)]

IfList = WLAN_INTERFACE_INFO_LIST()
pIfList = ctypes.pointer(IfList)
rc = WlanApi.WlanEnumInterfaces(hClientHandle, None, pIfList)

print rc
print "Num Entries: %s" % IfList.dwNumberOfItems

我找不到如何构造"WLAN_INTERFACE_STATE enumeration“,当我尝试使用WCHAR数组或其他任何东西时,此脚本返回我的6000000无线接口!

有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2011-11-08 07:10:10

它只是一个整数,没有结构0=未就绪,1=已连接,等等。

票数 0
EN

Stack Overflow用户

发布于 2011-11-19 00:49:26

嗯,这开始有意义了,因为这些结构中的大多数都有相应的指针。

据PInvoke的男孩们说

代码语言:javascript
复制
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WLAN_INTERFACE_INFO
{
  /// GUID->_GUID
  public Guid InterfaceGuid;
  /// WCHAR[256]
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  public string strInterfaceDescription;
  /// WLAN_INTERFACE_STATE->_WLAN_INTERFACE_STATE
  public WLAN_INTERFACE_STATE isState;
}

WLAN_INTERFACE_STATE在哪里

代码语言:javascript
复制
public enum WLAN_INTERFACE_STATE
{
  wlan_interface_state_not_ready = 0,
  ...
  // 1 to 6
  ...
  wlan_interface_state_authenticating = 7,
}

PInvoke on WLAN...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8043924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档