zapínaní wifi jedním tlačítkem

na mém notebooku jsem míval originální wifinu od IBM, u které jsem vyřešil zapínání přes tlačítko ThinkPad. jenže jsem si nedávno pořídil novou a lepší wifi, kterou jsem po menších peripetiích rozchodil, ale už na ní byl krátkej program od IBM na zapínání jedním tlačítkem.

první myšlenka se zrodila po objevení této možnosti:

wifi2-radioenable

jenže dopátrat se jak nějak elegantně měnit tuto hodnotu byl úkol téměř nadlidský, ale zjistil jsem, že fígl je v ukládání hodnoty 0, nebo 1 do registrů.

po několika radách se zkušenějšími kodéry mi ID NYCKER poradil tento skript, který vlastně pouze invertuje hodnotu v klíči HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325–11CE-BFC1–08002bE10318}\013radioEnable  a ja připsal message boxy 🙂

RegKey = "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\013radioEnable"
Set WSHShell = CreateObject("WScript.Shell")
KeyValue = WSHShell.RegRead(RegKey)

If KeyValue = 1 Then
KeyValue = 0
msgBox "Wi-Fi Disabled", vbInformation, "Wi-Fi"
Else
KeyValue = 1
msgBox "Wi-Fi Enabled", vbInformation, "Wi-Fi"
End

If WSHShell.RegWrite
Regkey, KeyValue
WScript.Quit

skript uložený s příponou .vbs opravdu funguje a hodnotu v registrech mění, tlačítkem ThinkPad ale spustit nešel, dokud jsem ho nepřevedl do .exe souboru. poté sice šel spouštět tlačítkem, a hodnotu v registrech měnil na jedničku (a na nulu 🙂 ), ale na ovládání wifi to nakonec nebylo ono…

další myšlenka se tedy uprala k prostému povolování/zakazování zařízení. samozdřejmě nějak one-click 😉

když už jsem to vzdával, objevil jsem na jednom foru zpitvořeny skript, který v sobě skrýval nebývalý potenciál. po opravení několika chybek, byl na světě .bat soubor, který je stejně úžasný jako ten pro automatický upload souborů na zaheslované FTP 😀

:: source: http://software.intel.com/en-us/forums/mobilized-software-development/topic/53786/
:: devcon: http://support.microsoft.com/kb/311272
@ECHO OFF

CLS
ECHO Checking Wireless Adapter.....

:: In this section I ran a status check on my wireless adapter
:: then PRINTED it to a txt file
devcon status PCIVEN_168C > c:wireless.txt

:: Here it checks for any errors when attempting to run devcon,
:: if it finds one it sends you down to "Q" where it informs you of the problem
:: and asks to send you to the MS website...
IF ERRORLEVEL ==1 GOTO Q

:: here it searches for the string "Disabled." in the txt file,
:: and it what the file above will say if it is there. If it finds "Disabled."
find /c "disabled." c:wireless.txt

CLS
ECHO Checking Wireless Adapter.....
IF ERRORLEVEL==1 GOTO E
:: then is sends to "ENABLE" where it enables the device.
:: If not found it send to "DISABLE" where it disables the device.
GOTO F

:DISABLE
ECHO Disabing Wireless card.....
devcon disable PCIVEN_168C
GOTO Z

:Q
CLS
ECHO Error:
ECHO You must first download DevCon command-line utility from Microsoft's website
ECHO then place it in your windows\system32 folder.
set choice=
set /p choice=TO go there now, press the "1" Key, or press any other key to exit...
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' GOTO IE
GOTO Z

:IE
START /MAX c:\progra~1\intern~1\iexplore.exe http://support.microsoft.com/kb/311272
GOTO Z

:ENABLE
ECHO Enabing Wireless card.....
devcon enable PCIVEN_168C

:Z
del /Q c:wireless.txt
ECHO Done.

zbývalo ho jen přechroupnut vynikajícím programem Bat_To_Exe_Converter.exe do .exe (s použitím volby Ghost aby proběh bez hlášek na pozadí) a bylo hotovo!

mikrom

Roman Mikulka aka mikrom. Ajťák, opravář, programátor samouk, elektrotechnik, koloběžkář a geocacher. Více na samostatné stránce O mně.

Mohlo by se vám líbit...