無線LANのON/OFFを一発で

ほとんどのモバイル用途のノートPCには無線LANのON/OFFを一発で行うためのスイッチかファンクション・キーを持っている。バッテリーをこまめに節約できるように、あるいは電波の利用が制限される状況になった場合に素早く対応できるようにだろう。



しかし今私が使っているPanasonicレッツノートR5は一発ON/FFの仕組みが用意されていない。タスクトレイの切り替えソフトの小アイコンをクリックしてメニューからON/OFFを選ぶか、ネットワーク接続のプロパティで有効/無効操作をしなければならない。以前使っていた村正(*1)は[Fn]キーと[F1]キー同時押しで一発切り替えできていたのでレッツノートR5のやり方はまどろっこしい。ちなみにレッツノートでTやWは無線LAN一発ON/OFFスイッチがあるらしい。一番小さな一番移動向きのRにのみないのは納得致しかねるところだ。



注:(*1)シャープのメビウスMURAMASA PC-MM1 5年延長保証を盾に無償修理に無償修理を重ねて使ってきたが、保証期間が切れるより少し先に修理費用累計が上限である購入金額を超えた。



最近改めて、何とかならないものか?と調べて、ローカルエリア接続(有線LAN)の有効/無効を切り替えるVBスクリプトを見つけた。ちょっと書き換えると無線LANのON/OFFにも使えた。オリジナルは「有効にします」「有効にしました」と2回メッセージBOXを出してくるのだがこの部分を削除して、黙ってON/OFFするように修正。

<参考> WindowsでLANインタフェースを有効<−>無効にするスクリプト



あとはスクリプトを一発起動する仕組みが必要だ。

Windowsのショートカットアイコンにはショートカットキーという機能がありいくつかのキーを同時押しすることでそのショートカットアイコンを起動できるように設定できるのだが、状況によっては機能しないし、機能する状況のはずなのに機能しないようなケースを経験していたので、今回はキーボードランチャーソフトを探してみた。

とりあえずすぐに見つかったのは「ClefLaunceur(*2)」。Windows上のどこでも作用するショートカットキーを設定するソフトで、[Win]キーと他のキーの組み合わせアプリを起動したりエクスプローラーでフォルダを開いたりできる。この滅多に使わない[Win]キーとの組み合わせというのがイイ。

注:(*2) Yoshikazu氏が提供するフリーウェア(http://www.gem.hi-ho.ne.jp/beteru/yskzt/



私は[Win]キーは滅多に使わないので「KeySwap(*3)」でキーの位置を[Esc]と入れ替えてある。これで「ClefLaunceur」を使い

[Win]+[1]キー : 有線LANの有効/無効 切り替え

[Win]+[2]キー : 無線LANの有効/無効 切り替え





注:(*2) KeySwapは愛とゆり氏が提供するフリーウェア(http://www.asahi-net.or.jp/~ee7k-nsd/



以上で無線LANのON/OFFを一発で行えるようになった。

無線LANのON/OFFを一発で行えないモバイルPCなど少数派中の少数派だろうから、おそらくほとんど誰の参考にもならないとは思うけど一応スクリプトのソースを以下に示します。

3行目の"ワイヤレス ネットワーク接続"はあなたのPCのネットワーク接続の中にある接続の名前に完全一致させてください。



const CN_TITLE="Wi-Fi切替"

const CN_NETWORK="ネットワーク接続"

const CN_LANIF="ワイヤレス ネットワーク接続"

' Shell Applicationを利用する

set objSapp = CreateObject("shell.application")

' コントロールパネルを取得

set objCtrlPanel=objSapp.NameSpace(3)

' コントロールパネルからネットワーク接続を探す

Set objFolder=FncFindItem(objCtrlPanel,CN_NETWORK).getFolder

If objFolder IS Nothing Then

msgbox CN_NETWORK &"がありません",,CN_TITLE

wscript.quit

end If

' ネットワーク接続から接続(LAN I/F)を探す

Set objLAN=FncFindItem(objFolder,CN_LANIF)

If objLAN IS Nothing Then

msgbox CN_LANIF &"がありません",,CN_TITLE

wscript.quit

end If

' LAN I/FをON->OFF、OFF->ONする

for each item in objLan.Verbs

if item.name="無効にする(&B)" Then

item.Doit

wscript.sleep 2000

exit for

end if

if item.name="有効にする(&A)" Then

item.Doit

wscript.sleep 2000

exit for

end if

next

' ローカル関数

Function FncFindItem(objFolder ,strVal)

set FncFindItem=Nothing

for each item in objFolder.items

if item.name =strVal Then

set FncFindItem=item

exit for

end if

next

End Function



スクリプトフリーソフトの作者の皆さんありがとうございました。