2009年4月6日月曜日

emonster USBモデム自動起動その2

CondExecを使った版はケーブルの切断を検知していないので、インターネット共有の終了は手動でやる必要がある。それも面倒なので改良…。cmdRegistryNotifyAppは前から使っているし、レジストリ監視で出来そうなのでやってみました。

■概要
USBケーブルが接続されたらインターネット共有を起動してUSBモデムとして使えるようにする
(インターネット共有の起動、接続、は手動でやらないといけないので面倒)

■emonsterでUSBケーブルの接続を知るレジストリ
[HKEY_LOCAL_MACHINE\Software\OEM\USB]
"Cable_In"=dword:00000000
ケーブルつなぐと1
切断すると0になる

このレジストリを監視(cmdRegistryNotifyApp)して、インターネット共有を起動(MortScript)する。

■レジストリ監視(cmdRegistryNotifyApp)の設定
cmdRegistryNotifyAppでレジストリを監視する
でもこのソフトはコマンドラインでのオプション指定のみで難しいので
cmdRegistryNotifyHelperを使用する(MortScript)

cmdRegistryNotifyHelper.iniは以下のとおり。
[USBケーブル接続]
;実行するパス
AppName=\Program Files\MortScript\MortScript.exe
;実行する引数('で囲む)
AppArgs='"\My Documents\MortScript\usb_modem_on.mscr"'
;通知を受け取るウィンドウのクラス(通知しないなら-)
pszClass=-
;通知を受け取るウィンドウのタイトル(通知しないなら-)
pszWindow=-
;通知するメッセージID(通知しないなら-1)
msg=-1
;登録成功とかのメッセージを全て出させるなら3
msglevel=3
NotifyID=USBmodem.get
hKey=HKLM
RegPath=Software\OEM\USB
Regvalue=Cable_In
dwFlags=1
ctComparisonType=1
dwMask=-
psz=-
dw=1
[USBケーブル切断]
;実行するパス
AppName=\Program Files\MortScript\MortScript.exe
;実行する引数('で囲む)
AppArgs='"\My Documents\MortScript\usb_modem_off.mscr"'
;通知を受け取るウィンドウのクラス(通知しないなら-)
pszClass=-
;通知を受け取るウィンドウのタイトル(通知しないなら-)
pszWindow=-
;通知するメッセージID(通知しないなら-1)
msg=-1
;登録成功とかのメッセージを全て出させるなら3
msglevel=3
NotifyID=USBmodem.get
hKey=HKLM
RegPath=Software\OEM\USB
Regvalue=Cable_In
dwFlags=1
ctComparisonType=1
dwMask=-
psz=-
dw=0

■インターネット共有を起動するMortScript
□usb_modem_on.mscr
#インターネット共有を起動
Run("\Windows\IntShrUI.exe")
#ちょっと待ってみる
Sleep(2000)
#接続
SendLeftSoft("インターネット共有")

□usb_modem_off.mscr
#インターネット共有を終了
Close("インターネット共有")


以上の設定をしたらcmdRegistryNotifyHelper.mscrでレジストリ監視を登録しておく。

2 件のコメント:

tt さんのコメント...

インターネット共有で左ソフトキーを使って接続するのがうまくいかない。直接左ソフトキーを押しても駄目。画面タップだと上手くいく。フォーカスがあってないような感じだなあ。

tt さんのコメント...

と思ったらどこかがおかしくなっていただけでハードリセットしたら左ソフトキーで接続できました。