Bluetooth ActiveSync を自動切断したい
2011-03-21


Bluetooth で ActiveSync すると、ずっとつながっているのと、ActiveSync が Windows Mobile をサスペンドさせないので、電池の減りが早くて、半日放っておくと電池残量が半分になっている! なんてことがたびたびです。

この対策をしようと、Mortscript を利用して、ActiveSync が idle の状態なら Bluetooth ActiveSync 接続(以下 BTAS) を自動的に切り、また一定期間後に BTAS 接続をしようと組んでみましたが、BTAS 接続を切った後、WinMo がサスペンド状態になると、Mortscript 自体のタイマーが継続されずに、次回の接続が行われません。ここで、定期的に WinMo をサスペンドさせないよう細工も出来ますが、そうすると電池の減り対策にならないようです。BTAS で電池を食うのは、Bluetooth 通信で食うパワーかと思っていましたが、実際には、WinMo がサスペンド状態にならないことが支配的に見えます。

Mortscript で実現した機能はそれは魅力的でしたが、志半ばで頓挫し、心の中で突っかかっていたので、C で組んでみました。

[URL]

あと、本プログラムの作成にはネット上の多くの情報を参考にしたため、メモ的に、Mortscript で組んだときの code も記しておきます。

--------------------------
Host="WM_MYNAME"
WinCaption="Connected to " & %Host%
RepllogStr="/remote /c:" & """" & %Host% & """"
RnaAppStr="-m -n -e""" & %Host% & """"
fError=0
tInterval=20
#SSExe="BlackMe.exe"
#SSPath="\My Storage\Program Files\BlackMe\" & %SSExe%

#Run("\Windows\rnaapp.exe", %RnaAppStr%)
#WaitFor(%WinCaption%, 15)
#Run("\Windows\udp2tcp.exe")
#Run("\Windows\rapiclnt.exe", "-dppp_peer")

While(fError=0)
#       StatusMessage("Waiting for BT-AS Connected...", ST_MESSAGE, TRUE, TRUE)
        Run ("\Windows\repllog.exe",%RepllogStr%)
        sleep(10000)
        cradled = RegRead(HKLM, "\System\State\Hardware", "Cradled")
        if (cradled>0)
#               StatusMessage("BT-AS Connected.")
                cnt=-1
                While((cnt<6)&&(cradled>0))
                        sleep (5000)
                        synchronizing = RegRead(HKLM, "\System\State\ActiveSync", "Synchronizing")
                        if (synchronizing=1)
                                cnt=0
#                               StatusMessage("BT-AS...Synchronizing")
                        elseif (cnt>=0)
                                cnt=cnt+1
#                               StatusMessage("BT-AS...Idle(" & cnt & ")" )
                        endif
                        cradled = RegRead(HKLM, "\System\State\Hardware", "Cradled")
                EndWhile
                if (cradled>0)
#                       StatusMessage("BT-AS...Disconnecting...")
                        Show(%WinCaption%)
                        SendCancel(%WinCaption%)
#                       StatusMessage("BT-AS...Sleeping...")
#                       if ((Length(SSexe)>0) && (ProcExists(SSExe) = FALSE))
#                               Run(SSPath)
#                       endif
                        for cnt = 1 to (2*tInterval)
                                IdleTimerReset
                                sleep(30000)
                        Next
                else
                        fError=1
                endif
                if (ProcExists("repllog.exe") = FALSE)
                        fError=1
                endif
        elseif (Question("Connection failed. Retry?", "Bluetooth ActiveSync", "RetryCancel") <> 1)
                fError=1
        endif
EndWhile
Message("AutoBTAS...Quit")
[その他自作プログラム]
[Omnia]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット