
Habilitar o deshabilitar el modo avión en Windows mediante PowerShell o VBA
Durante mucho tiempo he estado buscando una forma sencilla de habilitar/deshabilitar el Modo Avión en mi PC.
A lo largo de los años, he encontrado muchas publicaciones que habilitan o deshabilitan los adaptadores WiFi y similares, ¡pero en realidad no activan el modo avión!
Bueno, finalmente descubrí un script de PowerShell simple para hacerlo.
La solución de PowerShell
#Load the necessary library(ies) (void) (System.Reflection.Assembly)::LoadWithPartialName("System.Windows.Forms") add-type -AssemblyName System.Windows.Forms #Launch the Airplane mode settings dialog cmd /c 'start ms-settings:network-airplanemode' #wait a little for it to load (adjust this as required by your system) Start-Sleep 1 #Toggle the on/off setting switch (System.Windows.Forms.SendKeys)::SendWait(" ") #Close the dialog (System.Windows.Forms.SendKeys)::SendWait("%+{F4}")
La belleza aquí es que ni siquiera necesitas privilegios administrativos.
No soy fanático de SendKeys, nunca los uso, pero para mis necesidades esta solución rápida y sencilla funciona.
La solución VBA
También se podría trasladar fácilmente a VBA… como por ejemplo:
#If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If Sub ToggleWindowsAirplaneMode() 'Launch the Airplane mode settings dialog Shell "cmd /c start ms-settings:network-airplanemode" 'Wait a little for it to load (adjust this as required by your system) Sleep 1000 'Toggle the on/off setting switch SendKeys " " 'Close the dialog SendKeys "%{F4}" End Sub
Scripting Esto
Ahora bien, es bueno tener un comando de PowerShell que active o desactive el modo Avión de forma adecuada, pero no quería tener que abrir el ISE, recuperar el código y ejecutarlo… cada vez. Eso no mejoraría las cosas. Entonces, ¿cómo podríamos crear un archivo bat o vbs para que ejecute las cosas sin problemas?
El primer paso es guardar el código de PowerShell como un archivo ps1 independiente.
Archivo Bat
Nada podría ser más fácil. Simplemente crea un archivo bat e inserta un código como el siguiente:
powershell.exe -File "C:\Temp\ToggleAirplaneMode.ps1"
VBScript
Una vez más, es bastante trivial y simplemente podemos hacer:
WScript.CreateObject("WScript.Shell").run "cmd /c ""powershell.exe -File ""C:\Temp\ToggleAirplaneMode.ps1""""", 0, True
En ambos casos, simplemente cambie ‘C:\Temp\ToggleAirplaneMode.ps1’ por su ruta y nombre de archivo.
Espero que ayude a alguien más.