- 締切済み
OEで特定フォルダの新着メールを知らせるスクリプト
お世話になっています。 Outlook Expressで事前に指定した特定のフォルダに 新着メールが届いたときに、 それを知らせる機能があればいいと思ったんですが 社内規定によりフリーソフトが使用できない為、 WSH(vbs)でスクリプトを組もうとしています。 当初は特定したいフォルダのdbxファイルのサイズを 時間を空けて比較することで 「新着あり」のメッセージ(MsgBox)を 表示させるように組んだんですが、それだと タイトルのみのちょっとしたメールを感知しませんでした。 (dbxファイルのサイズが変化しない為) そこで今度はdbxファイルの最終更新日(最終アクセス日時)で 比較するように組んだんですが、そうすると Outlook Express上でフォルダをクリックするだけ (正確にはそのフォルダから違うフォルダをクリックした時)でも 最終更新日が更新され、「新着あり」とメッセージが表示されてしまいます。 ネットで検索してもなかなかいい方法が見つからずに困っています。 他に何かいい方法はありますでしょうか? ご教授いただけましたら幸いです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- SHIMAPEE
- ベストアンサー率75% (154/203)
回答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 -----
- SHIMAPEE
- ベストアンサー率75% (154/203)
一つのアイデアですが、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 -----
お礼
丁寧なお返事をありがとうございます。ただやっぱりファイルの中を読み込むのに時間がかかっちゃいますね。その間CPU使用率もあがっちゃうんで少し難しいかな、と。すいません。
お礼
ありがとうございます。ほんとにSHIMAPEEさんはお詳しいですね。参考にさせていただきます。