受信したメールを即座に開く、そんなできる男を目指す(本編)

最近生活リズムが不定期で、ぜんぜんできない男になりつつありますが、それでも序章からの続きです。

目的

(Outlookメール利用時) pdxメールを自動受信すると同時に、任意のアプリを起動する

概要

メールを自動受信した際、「メール受信中」「メール受信終了」のポップアップが表示されるので、それをCondExecのトリガーにしてアプリ(今回はW-ZERO3 Mail Filter)を起動します。

使用アプリ

手順

  • 上記アプリを\Program Files\アプリ名\アプリ名.exeにインストールする
  • 以下の内容を\Program Files\CondExec\CondExec.iniに追加して保存する
[e-mail_Waiting]
class=PhoneStatusWndClass2
title=Eメール(ウィルコム)
check=change
trigger=active
exec=\Program Files\CondExec\CondExec.exe|-execmode=OPEN -showicon=FALSE -section=e-mail_Receive

[e-mail_Receive]
class=PhoneStatusWndClass2
title=Eメール(ウィルコム)
check=change
trigger=active
timeout=180000
exec=\Program Files\execmulti\execmulti.exe|e-mail_Receive
ontimeout=\Program Files\CondExec\CondExec.exe|-execmode=OPEN -showicon=TRUE -section=e-mail_Waiting

※(10/5追記)後述の説明と一致させるため、間違ってたontimeoutの-showiconの値をTRUEに変更しました

  • 以下の内容を\Program Files\execmulti\execmulti.iniに追加して保存する
[e-mail_Receive]
exec=\Program Files\wmf\wmf.exe
exec=\Program Files\CondExec\CondExec.exe|-execmode=OPEN -showicon=FALSE -section=e-mail_Waiting
  • 以下のショートカットを\Windows\スタートアップ\に作成する
    • "\Program Files\CondExec\CondExec.exe" -execmode=OPEN -showicon=FALSE -section=e-mail_Waiting
      • ショートカットの作り方は適当に探してください(ぉ
  • メールを受信すると自動でメーラーが起動するので喜ぶw

注意点

  • 以下の状況では正常に動作しない恐れがあります
  • メールの受信に3分以上掛かる場合、処理がおかしくなります
    • メール受信中はToday画面下部にCondExecのアイコンが表示されているので、3分を超えそうな場合、これをタップして終了したほうが無難です。

タイムアウト時間を変えたい場合、CodeExec.iniの[e-mail_Received]セクションの、

  • timeout=180000

を書き換えてください。


解説

前回の記事と同様に特定アプリを監視して処理を行っています。そのため、動作原理や作業手順はほとんど共通です。

W-ZERO3シリーズではメールを自動受信するために、\Windows\tmail.exe(=Outlookメール)を利用しています。tmail.exeはメール受信開始時に起動するため、これをトリガーにして「tmail.exe起動後60秒でアプリ実行」という処理が出来そうです。しかし、メールのサイズや受信状況によっては60秒で受信できないことがあり、この条件では不十分です。
そこで、「メール受信中」ポップアップを使います。多くの人が常日頃鬱陶しく思っているあれが、ついに役に立つわけですw メール受信時は2回ポップアップが表示されるので、これを以下のようなトリガーにします。ついでにメール受信に失敗した場合のタイムアウト処理も設定しておきます。

  • 受信中=受信終了待ち
  • 受信終了=アプリ実行+受信中待ち
    • 3分(=180000秒)待っても受信終了しない、受信中待ち

本当は2回目のポップアップだけ監視できればいいんですが、2回ともクラス名、タイトルが同じなんで区別できないんですよね。でも他に監視できそうなアプリがなかったんで、2回起動するという強引な処理をしています。そのせいで1回目だけで終わった場合=受信失敗時に挙動がおかしくなるわけで・・・タイムアウトするようにして誤魔化してます(^^; 一定時間内に2回起動するのでExecDoubleを使ってもいいことに後から気づいたんですが、フロー書いてみたら大きなメリットはなかったんでそのままにしてます。ExecDouble使ったほうが処理はわかりやすくなるので、興味のある方は試してみるといいですよ。


あと、文中でも書きましたが、W-ZERO3メールやHDMobiMail使ってる場合にどう動くか分かりません。誰か人柱になって報告してください(ぉぃ