• 締切済み

OEで特定フォルダの新着メールを知らせるスクリプト

お世話になっています。 Outlook Expressで事前に指定した特定のフォルダに 新着メールが届いたときに、 それを知らせる機能があればいいと思ったんですが 社内規定によりフリーソフトが使用できない為、 WSH(vbs)でスクリプトを組もうとしています。 当初は特定したいフォルダのdbxファイルのサイズを 時間を空けて比較することで 「新着あり」のメッセージ(MsgBox)を 表示させるように組んだんですが、それだと タイトルのみのちょっとしたメールを感知しませんでした。 (dbxファイルのサイズが変化しない為) そこで今度はdbxファイルの最終更新日(最終アクセス日時)で 比較するように組んだんですが、そうすると Outlook Express上でフォルダをクリックするだけ (正確にはそのフォルダから違うフォルダをクリックした時)でも 最終更新日が更新され、「新着あり」とメッセージが表示されてしまいます。 ネットで検索してもなかなかいい方法が見つからずに困っています。 他に何かいい方法はありますでしょうか? ご教授いただけましたら幸いです。

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

回答No.1のスクリプトの変更です。4バイトを1回でReadするようにしました。 なお、DBXファイルのサイズによっては時間がかかりますのでご注意を。 ----- ' DBXファイル内のメッセージ数を表示するWSH(VBS) Const POS = 196 'DBXファイル内のメッセージ数の位置 FileName = WScript.Arguments(0) 'ドロップしたDBXファイルを処理 Set Stm = CreateObject("ADODB.Stream") Stm.Type = 1 Stm.Open Stm.LoadFromFile FileName Stm.Position = POS Buffer = Stm.Read(4) Stm.Close Set Stm = Nothing C1 = AscB(MidB(Buffer,4,1)) C2 = AscB(MidB(Buffer,3,1)) C3 = AscB(MidB(Buffer,2,1)) C4 = AscB(MidB(Buffer,1,1)) Count = C1*2^24 + C2*2^16 + C3*2^8 + C4 WScript.Echo Count -----

osakana4848
質問者

お礼

ありがとうございます。ほんとにSHIMAPEEさんはお詳しいですね。参考にさせていただきます。

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

一つのアイデアですが、WSH(VBS)でDBXファイル中のメッセージ数を参照してはどうでしょうか。 ただし問題があって、OEがDBXを開いているとエラーになります。たぶんその逆も。 WindowsXP Pro SP3 で試しました。 ----- ' DBXファイル内のメッセージ数を表示するWSH(VBS) Const POS = 196 'DBXファイル内のメッセージ数の位置 Dim Buffer(4) FileName = WScript.Arguments(0) 'ドロップしたDBXファイルを処理 With CreateObject("ADODB.Stream") .Type = 1 .Open .LoadFromFile FileName .Position = POS For ix = 1 To 4 Buffer(ix) = .Read(1) Next .Close End With C1 = AscB(Buffer(4)) C2 = AscB(Buffer(3)) C3 = AscB(Buffer(2)) C4 = AscB(Buffer(1)) Count = C1*2^24 + C2*2^16 + C3*2^8 + C4 WScript.Echo Count -----

参考URL:
http://oedbx.aroh.de/index.html
osakana4848
質問者

お礼

丁寧なお返事をありがとうございます。ただやっぱりファイルの中を読み込むのに時間がかかっちゃいますね。その間CPU使用率もあがっちゃうんで少し難しいかな、と。すいません。