« 今週のシンジくん月へ行く | ホーム | Firebugが諜報してます。 »

2007年5月11日

今週の自動化しよう

もとはといえばこの人が『らき☆すた』のOPの一節を曜日変えながらLive!メッセンジャーのステータスに載せてたからなんです。

tatenyon: 木曜日なーのに機嫌悪ーいのどーするーのー♪

hironobu> たてにょんもう金曜日だよたてにょん
tatenyon> かえるのわすれてた
tatenyon> っていうか自動化してえww
hironobu> ぶ

そんなわけでちょこっと調べてみたら結構簡単にできたのでした。.NETばんざい。

http://csharpfeeds.com/post.aspx?id=2218
Auto-Responder Add-in for Windows Live Messenger : CSharpFeeds
http://community.bartdesmet.net/blogs/bart/archive/2006/09/17/4431.aspx
Your first Windows Live Messenger add-in - B# .NET Blog

これらを参考にしてつくってみましたよ。

http://foursics.jp/products/motteke.zip
もってけ!一週間 Live! Messengerアドイン

ソースはこちら。

using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using Microsoft.Messenger;

namespace MottekeWeekdays
{
    public class MottekeWeekdays : IMessengerAddIn
    {
        #region Private members
        MessengerClient client;
        Timer timer;
        #endregion

        #region IMessengerAddIn Members
        public void Initialize(MessengerClient messenger)
        {
            this.client = messenger;

            this.client.AddInProperties.FriendlyName = "もってけ!一週間";
            this.client.AddInProperties.Creator = "Hironobu Koura";
            this.client.AddInProperties.Description = "もってかれます。";
            this.client.AddInProperties.Url = new Uri("http://foursics.jp");

            UpdatePersonalStatusMessage();
            this.timer = new Timer(60000);

            // this.client.IncomingTextMessage += new EventHandler(client_IncomingTextMessage);
            // this.client.OutgoingTextMessage += new EventHandler(client_OutgoingTextMessage);

            this.timer.Elapsed += new ElapsedEventHandler(client_Elapsed);
            this.timer.Enabled = true;
        }
        #endregion

        #region Private methods
        void client_IncomingTextMessage(object sender, IncomingTextMessageEventArgs e)
        {
            UpdatePersonalStatusMessage();
        }

        void client_OutgoingTextMessage(object sender, OutgoingTextMessageEventArgs e)
        {
            UpdatePersonalStatusMessage();
        }

        void UpdatePersonalStatusMessage()
        {
            string msg = DateTime.Now.ToString("ddd") + "曜日なーのに機嫌悪ーいのどーするーのー♪";
            this.client.AddInProperties.PersonalStatusMessage = msg;
        }

        void client_Elapsed(object sender, ElapsedEventArgs e)
        {
            UpdatePersonalStatusMessage();
        }
        #endregion
    }
}

トリガはTimerじゃなくても何でもいいんですけどね。とりあえずこんな感じでステータス欄の変更は可能でした。あとDLL名を (namespace名).(class名).dll のかたちにしないとLive! Messengerがロードしてくれなかった風。なんでこの例だと MottekeWeekdays.MottekeWeekdays.dll などというかなり冗長なファイル名に。もう少し何とかしたかったけどまあいいや。(上記zipパッケージでは対応済みです)

hironobu> よし
hironobu> 自動化できたよたてにょん!
tatenyon> まじでw
hironobu> あとでDLLとかおくる
tatenyon> おお
tatenyon> どもっすwwwww
tatenyon> よく考えると、いいBLOGネタだな
hironobu> われながらばかすwwwww

(´・ω・`)ッテイウカ ヲレ ヨクカンガエタラ 『らき☆すた』 ミタコトナイハズナンダケド

(5/14 12:20追記) DLL名が冗長だよ問題については、 http://blogs.wdevs.com/angelos/archive/2006/12/15/19093.aspx
Writing a Windows Live Messenger add-in

ここに方法が書いてあった。まあ"namespaceいらねーじゃん"ってそのまんまではあるんだけどにゃ。

トラックバック(0)

トラックバックURL: http://foursics.jp/cgi-bin/mt/mt-tb.cgi/92

コメントする