mikrom's blog

Napiš to, nebo si na to už nikdo nikdy nevzpomene! ...na co?

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

wifi 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}\0013\radioEnable a ja připsal message boxy :)

RegKey = "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0013\radioEnable" 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 :D

:: 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 PCI\VEN_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 D
:: then is sends to "E" where it enables the device.
:: If not found it send to "D" where it disables the device.
GOTO E

:D
ECHO Disabing Wireless card.....
devcon disable PCI\VEN_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

:E
ECHO Enabing Wireless card.....
devcon enable PCI\VEN_168C

:Z
del /Q c:\wireless.txt
ECHO Done.
@ECHO ON

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!

Komentáře

Zanechte komentář »

 

Doposud nebyl připojen žádný komentář. Buďte první!

Připojte váš komentář!

Můžete používat Texy! syntaxi.

* Hvězdičkou jsou označeny povinné informace.