[Windows Mobile]Advanced/W-ZERO3[es]でのBluetooth PAN接続/切断支援MortScript
先日、Advanced/W-ZERO3[es]によるBluetooth PANについてエントリしましたが、ワンアクションで接続、切断できるようにするため、久しぶりにMortScriptを書いてみました。
関連エントリ:[N810]NOKIA N810とAdvanced/W-ZERO3[es]でBluetooth PAN
Bluetooth PAN切断中にこのMortScriptを起動すると接続を、接続中に起動すると切断します。(たまに動作が変なことも?)
僕はSortInchKeyで、このスクリプトをSoftKey2のダブルクリックに設定しています。
動画編集の練習とYouTubeデビューをかねて、デモを作ってみました。
前半: トグル動作の説明
後半: Bluetooth PANの確立〜NOKIA N810でのブラウジングまでの一連の動作
前半、なぜか額縁になっちゃってます。なんでだろ……。
ダウンロード
自分でも使ってますが、無保証です。
ライセンスは……そんなもんはありません。自由にしてください。
インストールと使い方
前回のエントリを参照の上Bluetooth PANを設定。MortScriptのPPC版をインストールします。個別にダウンロードするようにはなっておらず、zipの中にOS別に数種類入っています。
僕はページ下部のリンクTemporaryからたどってダウンロードできるV4.11b7を使っています。
あとはスクリプトをダウンロードして実行するだけですが、実行に手間をかけていては本末転倒ですので、最も効率的な実行方法を模索してください。
前述の通り、僕はSortInchKeyで、このスクリプトをSoftKey2のダブルクリックに設定しています。
画面の解像度等に依存するため、RealWVGA化や、フォントサイズの変更などをしていると動かないと思います。
ソースコード
サブルーチン「POff」の「PowerOff」はコメントアウトしていますが、外してもいいかも?
#
# Helper script for ICS via Bluetooth PAN
#
# Use MortScript V4.11b7
#
######### Global Variable definition #########
Global(AppName, AppPath, MannerMode)
AppName = "インターネット共有"
AppPath = "\Windows\IntShrUI.exe"
MannerMode = RegRead("HKCU",\
"\Software\Sharp\PhoneStatus",\
"Status3")
######### Entry Point #########
Call("Main")
######### Subroutine definition #########
# メイン
Sub Main
# インターネット共有を起動し
# 前面に出るまで待つ
Call("Activate")
# Bluetooth PANの項目が現れるまで
# タイムラグがあるので待つ
Sleep(1000)
# 接続が無い状況を確認
IF(WindowText(60, 120) eq "切断完了")
# Bluetooth PANの存在を確認
Call("BluetoothCheck")
# 「接続」ボタンを押して、進捗確認
# SoftKeyの文字はWindowText()で
# 読み取れないようなので、みなし
Call("POn")
Else
# 接続中であることが想定されるので
# 「切断」ボタンを押して、進捗確認へ
# SoftKeyの文字はWindowText()で
# 読み取れないようなので、みなし
Call("POff")
EndIF
EndSub
# インターネット共有の起動と起動チェック
Sub Activate
# インターネット共有の起動
Run(AppPath)
# インターネット共有が前面になるのを待つ
WaitForActive(AppName, 4)
# 起動に失敗しているようなら終了
If(NOT wndExists(AppName))
Call("ErrorSound")
Message(AppName & "が^CR^^LF^起動できないようです")
Exit
EndIf
EndSub
# Bluetooh PANの有無のチェック
Sub BluetoothCheck
btstatus = RegRead("HKLM",\
"\System\State\Hardware",\
"Bluetooth")
Switch(btstatus)
Case(0, 8)
Call("ErrorSound")
Message("Bluetoothが^CR^^LF^使用不能です")
Exit
EndSwitch
# Bluetooth PANが無ければ
IF(WindowText(60, 240) eq "USB")
# リストボックスの下の項目を選択してみる
MouseClick(AppName, 60, 240)
SendSpecial("Down")
SendSpecial("CR")
Sleep(100)
# それでもBluetooth PANでなければ終了
IF(WindowText(60, 240) eq "Bluetooth PAN")
# nop
Else
Call("ErrorSound")
Message("Bluetooth PANが^CR^^LF^見つからないようです")
Exit
EndIf
EndIf
EndSub
# 「接続」ボタン押しと、その後の処理
Sub POn
Call("WSIMCheck")
SendSpecial("LeftSoft")
# W-SIMの接続が確立するまで待つ
# 20秒でタイムアウト
Repeat(20)
status = RegRead("HKLM",\
"\System\State\Connections\Modem",\
"Count")
If(status = 0)
Sleep(1000)
EndIF
EndRepeat
If(status = True)
# 接続が確立したら
ToggleDisplay(off)
If(NOT MannerMode)
PlaySound("\Windows\Alarm3.wav")
EndIf
Call("RepeatVibrate", 1)
Else
# 接続が確立しなかったら
Call("ErrorSound")
Call("RepeatVibrate", 2)
EndIf
EndSub
# 「切断」ボタン押しと、その後の処理
Sub POff
SendSpecial("LeftSoft")
ToggleDisplay(off)
If(NOT MannerMode)
PlaySound("\Windows\Infend.wav")
EndIf
Call("RepeatVibrate", 3)
#PowerOff
EndSub
Sub RepeatVibrate
IF(argc = 1 and argv[1] > 0)
For i = 1 to argv[1]
Vibrate(200)
IF(i < argv[1])
Sleep(300)
EndIF
Next
EndIF
EndSub
Sub WSIMCheck
strength = RegRead("HKCU", \
"Software\Sharp\ShPhoneLib", \
"RFStrength")
If(strength < 2 || strength > 6)
Call("ErrorSound")
Message("電界強度が^CR^^LF^弱いようです")
Exit
EndIf
EndSub
Sub ErrorSound
If(NOT MannerMode)
PlaySound("\Windows\spl_outofrange.wav")
EndIf
EndSub
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/13760/41141833
Listed below are links to weblogs that reference [Windows Mobile]Advanced/W-ZERO3[es]でのBluetooth PAN接続/切断支援MortScript:

Comments