solo quitar puedo modo desactivar desactiva cómo como bloqueado avion activar activa vba vbscript cmd automation vb6

vba - quitar - modo avion windows 7



Cómo cambiar automáticamente el modo Avión en Windows (2)

En mi computadora portátil puedo cambiar el modo Avión manualmente presionando FN + F12 , quiero hacer lo mismo automáticamente desde el proyecto VB6 o VBA.

Hice mucha búsqueda y solo encontré respuestas sobre Habilitar / Inhabilitar el adaptador inalámbrico o usar Sendkeys para Windows 8:

Dim WSh As Object Set WSh = CreateObject("Wscript.Shell") WSh.Run "C:/WINDOWS/system32/rundll32.exe %SystemRoot%/system32/van.dll,RunVAN", , True Sleep 200 WSh.SendKeys " " Sleep 1000 WSh.SendKeys "{ESC}"

Pero este código no es confiable y no creo que funcione en Windows 7 o Windows 10.

Así que mi pregunta es: ¿Existe alguna forma confiable de alternar automáticamente el modo Avión en Windows?


No tengo una tecla de función en mi teclado, y esto no está probado, solo es una idea. ¿Por qué no lo intentas así?

Sub SetMode() CreateObject("Shell.Application").MinimizeAll Application.SendKeys "{F12}" ''Try a way to refer the function key End Sub

Otra opción posible es algo como esto, dependiendo de tu 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

El signo ~ es para ENTRAR, y la tecla ctrl+escape simula la tecla de windows en su teclado. Después de alcanzar lo que desea, puede navegar con pestañas y flechas.


Solución 1: SendKeys

AFAIK la tecla Fn en un teclado no es interceptada por Windows, es una asignación de hardware a una tecla de función, es decir. "Sube el volumen". Ahora el problema con eso es que la tecla "apagar / habilitar wifi" envía una señal al hardware para apagar la tarjeta. Así que eso es para SendKey, no hay una clave virtual para "Conexión / desconexión inalámbrica" ​​(aunque hay una para "subir volumen").

Solución 2: La API de Windows 8

Ahora, el otro enfoque sería utilizar la API de Windows 8 aquí https://msdn.microsoft.com/en-us/library/windows/hardware/hh406627(v=vs.85).aspx y más específicamente las siguientes interfaces:

  • IMediaRadioManager
  • IRadioInstance
  • IRadioInstanceCollection
  • IMediaRadioManagerNotifySink

Esto debería permitirle obtener la radio para bluetooth, wifi, ... así como el "modo avión" y luego apagarlos, pero nunca he intentado usar eso con VBS.

Solución 3: Uso de consultas WMI

Con las consultas de WMI, básicamente puede acceder a cualquier elemento de su máquina, incluidas las tarjetas de red. La clase que busca es "Win32_NetworkAdapter" y puede encontrar todos los documentos aquí: https://msdn.microsoft.com/en-us/library/aa394216(v=vs.85).aspx

Aquí hay un pequeño código de ejemplo que mostrará una lista de los adaptadores de red actuales; puede personalizarlo para guardar los que estaban habilitados antes de ejecutar el script para poder volver a habilitarlos después.

'' 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

Observación:

Básicamente, se supone que no debe acceder al "Modo avión" desde el código, ya que es un privilegio de usuario hacerlo. Imagínese si alguien crea una aplicación que active el roaming y la conexión de datos y luego comience a actualizarse mientras está en el extranjero ...