我需要刷新 Window 的无线网络列表。
我很乐意接受任何我可以直接或间接从 VBA自动化(cmdline、wmi 等)的解决方法。(我使用的是 Windows 7 Home 64 位和 Office 365 Pro 64 位。)
我可以通过编程方式列出网络,包括netsh
或下面的代码,但除非我物理单击任务栏通知区域上的网络连接图标,否则列表不会刷新
该列表并不能自动更新每60秒为一些文档的状态。
断开连接+重新连接 NIC不是可行/可持续的选择。
我想我没有按要求从WlanOpenHandle获得句柄,而且我很擅长将 C 转换为 VBA。
没有错误,但 WlanScan 返回未知代码1168
。
我在这里改编自 VB 版本:wlanscan (wlanapi)
MSDN 文档:WlanScan 函数
相关位:
这是 的函数声明VB
,已改编:
Public Shared Function WlanScan(ByVal hClientHandle As IntPtr, _
ByRef pInterfaceGuid As Guid, ByVal pDot11Ssid As IntPtr, _
ByVal pIeData As IntPtr, ByVal pReserved As IntPtr) As UInteger
End Function
...以及函数用法C#示例:
Guid g;
//wlanHndl is the handle returned previously by calling [WlanOpenHandle]
for (int i = 0; i < infoList.dwNumberOfItems; i++)
{
g = infoList.InterfaceInfo[i].InterfaceGuid;
uint resultCode=WlanScan(wlanHndl, ref g, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
if (resultCode != 0)
return;
}
...以及如何打开手柄,在C++(从这里):
dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
return 1;
// You can use FormatMessage here to find out why the function failed
}
“未隐藏:”
获取(缓存)无线网络列表:
列出网络的代码效果很好- 除了不自己刷新。(以前我正在解析 的文本输出netsh wlan show networks mode=bssid,它有同样的问题。)
我之前删除了这个部分,因为它很长,而且除了刷新之外似乎工作正常。-)
天涯尽头无女友
德玛西亚99
梵蒂冈之花
相关分类