在我的笔记本电脑上,我可以通过按 FN + F12 手动切换飞行模式,我想从VB6项目或VBA自动执行相同的操作。
我进行了大量搜索,但只找到了有关启用/禁用无线适配器或使用{8} for Windows 8的答案:
Sendkeys
但是这段代码不可靠,我认为它不适用于Windows 7或Windows 10。
所以我的问题是:是否有任何可靠的方法可以在Windows上自动切换飞行模式。
答案 0 :(得分:4)
我的键盘上没有功能键,这没有经过测试,只是一个想法 - 为什么你不尝试这样:
Sub SetMode()
CreateObject("Shell.Application").MinimizeAll
Application.SendKeys "{F12}" 'Try a way to refer the function key
End Sub
另一种可能的选择是这样的,具体取决于您的Windows:
Option Explicit
Public Sub TestMe()
Application.SendKeys ("^{ESC}")
Application.Wait Now + TimeValue("00:00:01")
SendKeys ("{s}")
SendKeys ("{e}")
SendKeys ("{t}")
SendKeys ("{t}")
SendKeys ("{i}")
SendKeys ("{n}")
SendKeys ("{g}")
SendKeys ("{s}")
SendKeys "~", False
Application.Wait Now + TimeValue("00:00:01")
SendKeys ("{a}")
SendKeys ("{i}")
SendKeys ("{r}")
Application.Wait Now + TimeValue("00:00:01")
SendKeys "~", False
Application.Wait Now + TimeValue("00:00:01")
SendKeys "~", False
End Sub
~
符号用于输入,ctrl+escape
模拟键盘上的windows
键。达到想要的效果后,您可以使用标签和箭头进行导航。
答案 1 :(得分:2)
解决方案1:SendKeys
AFAIK键盘上的Fn键不会被Windows拦截,它是硬件映射到功能键即。 "音量增加"。 现在的问题是"关闭/启用wifi" key向硬件发送信号以关闭卡。 因此,对于SendKey来说,没有虚拟键可用于"无线关/开" (虽然有一个用于"音量增加")。
解决方案2:Windows 8 API
现在另一种方法是在这里使用Windows 8 API https://msdn.microsoft.com/en-us/library/windows/hardware/hh406627(v=vs.85).aspx,更具体地说是以下接口:
这应该可以让你获得蓝牙,wifi,...以及"飞机模式"然后关闭它们,但我从来没有尝试过用VBS。
解决方案3:使用WMI查询
使用WMI查询,您基本上可以访问计算机中的任何内容,包括网卡。 您正在寻找的课程是" Win32_NetworkAdapter"所有文档都可以在这里找到:https://msdn.microsoft.com/en-us/library/aa394216(v=vs.85).aspx
下面是一个列出当前网络适配器的示例代码,您可以自定义此代码以保存在运行脚本之前已启用哪些网络适配器,以便能够在之后重新启用它们。
' connects to the WMI server of the local machine
Set objConnection = GetObject("winmgmts:" _
& "{impersonationLevel=Delegate," _
& "authenticationLevel=PktPrivacy}!" _
& "\\localhost\root\cimv2")
' gets a list of all the network adapters in the system
Set objNetworkAdapters = objConnection.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
' loops through all network adapters
For Each objCurrentNetworkAdapter in objNetworkAdapters
' objCurrentNetworkAdapter.Disable
' objCurrentNetworkAdapter.Enable
WScript.Echo objCurrentNetworkAdapter.Name
Next
备注:
你基本上不应该使用"飞机模式"从代码中获取用户权限,想象一下如果有人构建了一个开启漫游和数据连接的应用程序,那么当你在国外时就会开始更新......