ホームへ戻る 更新履歴へ戻る 感想お待ちしてます(^^)/

(2010/04/08)
★携帯メールで自宅PCを操作しよう
UWSC使用。ソースは下の方に。

携帯をメール定額にしたので活用しようかと。
とりあえず次の様な使い方を想定しました。

1)携帯からPCにURLをメールで送る。
2)PCでメール受信を監視。受信。
3)URLのページをスクリーンキャプチャ。
4)携帯で見やすい様に画像を加工。
5)画像を携帯にメール送信。

メール定額を利用してwebアクセスもただにする作戦です。
携帯に送られる画像は↓みたいな感じ。



■使用ソフトウェア等■

○UWSC(ver.4.6 Free版)→HP
 Windowsを自動化できるスクリプト言語です。これで全自動管理。
 こちらのスクリプトを参考にさせて戴きました→HP

1)携帯からPCにURLをメールを送る。
 そもそもURLをどうやって得るのか?ですが、こちらのメールサービスを
 利用させて頂いています。タダだべ→HP
 文字主体のweb情報ならば、こちらだけで済みます。

2)PCでメール受信を監視。受信。
 POP Out(version 1.10 2009-12-15)→HP
 コマンドラインでメール受信が出来ます。
 nkf.exe。漢字コード変換フィルタ→DL
 2090\win\フォルダ内のnkf.exe使用。
 PGF$=で指定しているフォルダに置いて下さい。

3)URLのページをスクリーンキャプチャ。
 CrenaHtml2jpg(V1.20)→HP
 URL指定でwebサイトのスクリーンショットを取ってくれます。
 スクロールの必要な縦に長いページも1枚の画像に。
 コマンドラインでも使用可。

4)携帯で見やすい様に画像を加工。
 ImageMagick-6.6.1-0-Q16-windows-dll→HP
 コマンドラインでも使える画像編集ソフトウェア。
 携帯のメーラーでは画像の拡大も回転もスクロールも出来ないので
 携帯でメール受信後すぐに見やすい状況になる様、画像を分割、回転させています。
 画像形式を変えただけで全然違った動作になったりするので注意。

5)画像を携帯にメール送信。
 SMAIL(V4.09)→HP
 コマンドラインでメール送信が出来ます。

各作者様に感謝いたします。

動作環境の携帯はSH006@au。液晶854x480。
PC用に専用のメアドがある前提で作っています。
メール受信後、バックアップせずにサーバーから消しているので注意。
スパム防止等のメールフィルタから、使用のメアドは通過する様に設定しておきましょう。
自分のアカウントだからって自分のメアドが通るとは限らないです。
一番解決に時間が掛かった所orz

色々と応用が利きそうですが、機能を増やすとソースが難解になるので、初期段階で公開しておきます。
各ソフトの設定と、「//■■■各自指定■■■」直下を書き換えが必要です。
解説は特になし。スクリプト中のコメント参考にして下さい。
タブずれるのでソースDL→ぽちっとな



(2010/04/09)追記
ImageMagickですが、ほとんどの所で解説が間違っているのでフォローしておきます。
いわゆる画像の切り抜き、切り取り、トリミング、クロップと呼ばれている作業をするのに「convert -crop」を使うのは間違い。「convert -chop」が正解です。たぶん(自信ないのかよw)
cropだと内部に余計な情報が残っています。
詳しくは本件から外れますのでぐぐって下さいって事で。

(2010/04/23)追記
nkf.exeの記述が抜けていたので追加。


(2010/04/16)[ソフト]UWSC「携帯メールで自宅PCを操作しよう」その2 に続く。


//<-! ■携帯2PC.UWS->

//■■■各自指定■■■
public PGF$="d:\pc2k\"                                      //プログラムフォルダ。POPOUT、CrenaHtml2jpg、smail
public IM$="D:\ImageMagick\"                         //ImageMagickインストールしたフォルダ
public 画像F$="d:\pc2k\cg\"                           //画像用作業フォルダ
public POP鯖$="pophoge.hoge.jp"                                     //メアドじゃないよサーバーね。
public POP鯖パス$="passpass"                                        //
public SMTP鯖$="smtphoge..hoge.jp"                         //メアドじゃないよサーバーね。
public PCのメアド$="pc@hoge.hoge.jp"
public 携帯のメアド$="keitai@hage.jp"


//■■■変数定義■■■
public WEB幅
//public 
//public 


//■■■■■メインルーチン■■■■■
while true              //<無限ループ>

        //まずはメール来てるかチェック
        print "★メールチェックなう★"
        全メール$ = メール受信()
        print "【全メール】"+ 全メール$ + "【/全メール】"             //チェック

        //最初の1通を切り出し。
        // "m"は、POPOUTで指定した複数メールの区切り記号。1文字にしとかないとtokenが使えない。
        メール1通$ =  token("m",全メール$,true) 

        //●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
        while メール1通$<>""

                print "【メール1通$】"+メール1通$+"【/メール1通$】"      //チェック
                
                宛先$=trim(betweenstr(メール1通$,"<#cr>From: ","<#cr>To:"))                  //<#cr>は改行
                件名$=trim(betweenstr(メール1通$,"<#cr>subject: ","<#cr>Message-ID"))
                本文$=trim(chgmoj(メール1通$,"x-a"+betweenstr(メール1通$,"x-a","& lt;#cr><#cr>"),""))+"<#cr>"
                
                //テスト
                print "【宛先】"+宛先$+"【/宛先】"    //チェック
                print "【件名】"+件名$+"【/件名】"    //チェック
                print "【本文】"+本文$+"【/本文】"    //チェック
                
                
                //■■何の処理をさせるか判定■■
                処理$="スルー" //デフォ値
                
                //件名$の頭が「Re:」か「http://」ならばweb画面取得へ
                if COPY(件名$,1,3)="Re:" then 件名$="http://" + COPY(件名$,4)
                if COPY(件名$,1,3)="てすと" then 処理$="てすと返信"
                if COPY(件名$,1,7)="http://" then 処理$="web画面返信"
                
                print "【処理内容】"+ 処理$
                
                //■■<処理@> てすと返信処理■■
                ifb 処理$="てすと返信" then
                        //メール送信(件名$,本文$,添付$)
                        メール送信("re:てすと","テスト返信。届きましたよ〜","")
                endif
                //■■</処理@> てすと返信処理終了■■
                
                
                //■■<処理A> web画面返信処理■■
                ifb 処理$="web画面返信" then
                        print 件名$
                        
                        //■web画面取得■
                        //URL$="http://mayugeya.sakura.ne.jp/"              //テスト文字列
                        URL$=件名$
                        
                        //WEB幅決定
                        WEB幅=840            //デフォ値は840x∞→840x∞
                        //例)本文$に「はば1280<#cr>」と指定があったらWEB幅=1280に。1280x∞→840x∞
                        if betweenstr(本文$,"<#cr>はば","<#cr>")<>"" then WEB幅 = val(betweenstr(本文$,"はば","<#cr>"))
                        if WEB幅<480 then WEB幅=480
                        print "WEB幅="+WEB幅
                        
                        WEB画像取得(URL$)                                //CrenaHtml2jpgでweb画面キャプ
                        添付ファイル数=画像分割()                               //PhotoShifterで画像の加工。ついでに添付ファイル数返す
                        
                        //添付ファイル数=0はエラーだ。リトライ処理。
                        ifb 添付ファイル数=0 then
                                sleep(10)                                                               //ちょっと待機
                                WEB画像取得(URL$)                                //CrenaHtml2jpgでweb画面キャプ
                                sleep(10)                                                               //ちょっと待機
                                添付ファイル数=画像分割()                               //PhotoShifterで画像の加工。ついでに
                                sleep(10)                                                               //ちょっと待機
                        endif
                        
                        //添付ファイル数=0はエラーだ。リトライ処理。コピペ
                        ifb 添付ファイル数=0 then
                                sleep(10)                                                               //ちょっと待機
                                WEB画像取得(URL$)                                //CrenaHtml2jpgでweb画面キャプ
                                sleep(10)                                                               //ちょっと待機
                                添付ファイル数=画像分割()                               //PhotoShifterで画像の加工。ついでに
                                sleep(10)                                                               //ちょっと待機
                        endif
                        
                        //添付ファイル数=0はエラーだ。リトライ処理。コピペ
                        ifb 添付ファイル数=0 then
                                sleep(10)                                                               //ちょっと待機
                                WEB画像取得(URL$)                                //CrenaHtml2jpgでweb画面キャプ
                                sleep(10)                                                               //ちょっと待機
                                添付ファイル数=画像分割()                               //PhotoShifterで画像の加工。ついでに
                                sleep(10)                                                               //ちょっと待機
                        endif
                        
                        添付ファイル$=""
                        //添付ファイル数=1だと"a.gif"
                        if 添付ファイル数=1 then 添付ファイル$ = 画像F$+"a.gif"
                        
                        //添付ファイル数=nだと「a-0.gif,a-1.gif,a-2.gif,……a-n-1.gif,」
                        ifb 添付ファイル数>1 then                                       
                                添付ファイル$ = 画像F$+"a-0.gif"
                                for i=1 to 添付ファイル数-1
                                添付ファイル$ = + 添付ファイル$ +","+ 画像F$+"a-"+i+".gif"
                                next
                        endif
                        
                        print 添付ファイル$
                        
                        //smailで携帯へメール送信。メール送信(件名$,本文$,添付$)
                        件$="web画像"
                        if 添付ファイル数=0 then 件$="web画像エラー"
                        メール送信(件$,URL$,添付ファイル$)
        
                endif
                //■■</処理A> web画面返信処理終了■■



                //■■処理完了後■■

                メール1通$ =  token("m",全メール$,true)

        wend
        //●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●


        //メール鯖に負担掛けるから、メールの確認は3分おき
        print "★待機なう:後3分★"
        sleep(60)
        print "★待機なう:後2分★"
        sleep(60)
        print "★待機なう:後1分★"
        sleep(60)

wend                    //</無限ループ>


//■■■関数■■■

function メール受信()
        //例)POPOUT.EXE -d -b m -s pophoge.hoge.jp -u pc@hoge.hoge.jp -p passpass | nkf.exe -s
        //戻り値はヘッダから本文まで丸々メールのテキスト。場合によっては複数メール分。
        CMD$=PGF$+"\POPOUT.EXE -d -b m -s "+POP鯖$+" -u "+PCのメアド$+" -p "+POP鯖パス$+" | "+PGF$+"nkf.exe -s"
        print "メール受信>"+CMD$
        result=doscmd(CMD$)
fend



procedure WEB画像取得(U$)
        //フォルダ(画像F$)内消去。面倒臭いからバックアップ無しでいいや。
        doscmd("del "+画像F$+"*.* /Q")
        //例)CrenaHtml2jpg.exe -oD:\pc2k\cg\test.gif -fgif -p -r -w1200x0 -s840x0 -t25 -uhttp://www.yahoo.co.jp
        doscmd(PGF$+"CrenaHtml2jpg.exe -o"+画像F$+"test.gif -fgif -p -r -w"+WEB幅+"x0 -s840x0 -t25 -l10 -u"+U$)
fend



function 画像分割()
        //画像の分割
        //D:\ImageMagick\convert -crop 840x480 D:\pc2k\cg\test.gif D:\pc2k\cg\a.png
        doscmd(IM$+"convert -crop 840x480 "+画像F$+"test.gif "+画像F$+"a.png")

        //回転
        //D:\ImageMagick\mogrify -rotate +90 +repage -compress lzw -format gif D:\pc2k\cg\a*.png
        doscmd(IM$+"mogrify -rotate +90 +repage -compress lzw -format gif "+画像F$+"a*.png")

        //PNGファイル消しちゃえ
        doscmd("del "+画像F$+"*.png /Q")

        //ついでに添付ファイル数を返値に
        A$=doscmd("dir "+画像F$+" /b")
        print A$
                //gifファイルの数は A$の中の".gif<#cr>"を数えればOK
                //手抜きなので「gif」フォルダがあるとたぶんバグる
        B=1
        C=0
        WHILE B<>0
                C=C+1
                B= POS("gif<#cr>",A$,C)
        WEND
        D=C-2
        print "添付ファイル数="+D
        result=D
fend



procedure メール送信(件名$,本文$,添付$)
        //例)smail -hsmtphoge.hoge.jp keitai@hage.jp -f"mypc<pc@hoge.hoge.jp>" -s"web" -T"本文" -aD:\pc2k\cg\a-0.gif,D:\pc2k\cg\a-1.gif,D:\pc2k\cg\a-2.gif -i -d
        CMD$=PGF$+"smail -h"+SMTP鯖$+" "+携帯のメアド$+" -f<#DBL>mypc<"+PCのメアド$+"><#DBL> -s<#DBL>"+件名$+"<#DBL> -T<#DBL>"+本文$+"<#DBL> -a"+添付$
        print CMD$
        doscmd(CMD$)
fend

(2010/04/16)[ソフト]UWSC「携帯メールで自宅PCを操作しよう」その2 に続く。


ホームへ戻る 更新履歴へ戻る 感想お待ちしてます(^^)/