無線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
スクリプトやフリーソフトの作者の皆さんありがとうございました。