mixi stationが中々便利なので、OpenPNE Stationを作ってみました。
タスクトレイに収めるクライアントアプリですが、多分最も簡単なのは.NetFrameWorkでしょう、ただ.NetFrameWork2はVista以上でないとデフォルトでインストールされていないので.NetFrameWork1.1かなぁ。。。?などと考えつつも、これしきのアプリにドットネットかよ!って感じで結局WinMainで作ってみました。笑
実は途中でMFCに逃げたのですが、何とかWinMainに戻ってこれました。汗

仕組みはとてもシンプルで、サーバー(OpenPNE)側にXML-RPCサーバーを仕込んであります、それをクライアント(タスクトレイアプリ)が定期的にユーザIDとパスワードで認証しログを覗いて自分のログインタイムよりも新しいアクセスログを見つけて収拾しているだけです、未実装ですが新着メッセージや日記への書き込みなんかも簡単に取れそうですね(これはもうSQLさえ書ければクライアントは表示するだけなので)。
ただしこのバージョン(まだプロトタイプ版です)大きな問題(欠陥)があります!
トレイアイコンのツールチップへ情報を表示してもらうための配列がなんと256バイト固定なのです!、途中で気が付いて。マママジ?( ̄□ ̄;)。。。
typedef struct _NOTIFYICONDATA {
DWORD cbSize;
HWND hWnd;
UINT uID, uFlags, uCallbackMessage;
HICON hIcon;
#if (_WIN32_IE < 0x0500)
TCHAR szTip[64];
#else
TCHAR szTip[128];
#endif
#if (_WIN32_IE >= 0×0500)
DWORD dwState, dwStateMask;
TCHAR szInfo[256];
union {
UINT uTimeout, uVersion;
} DUMMYUNIONNAME;
TCHAR szInfoTitle[64];
DWORD dwInfoFlags;
#endif
#if (_WIN32_IE >= 0×600)
GUID guidItem;
#endif
} NOTIFYICONDATA, *PNOTIFYICONDATA;
まぁトレイアイコン用ツールチップですから、大きな情報を表示する用途は想定していないのでしょうけど、ToolTipのバルーン表示に頼らず自前でウインドウを書かないといけないみたいです、ふぅー凹。
2008/12/25 加筆
TrayICONの機能ではなくて、汎用的ツールチップでは文字数256バイトの制限はないようです、でもこのコントロールは何か別のコントロール(例えばボタン)と結びつけて使うのが前提なようで、ボタン上にマウスポインターがホバーしたら自動で表示させるような使い方は簡単なのですが、単独で任意の位置に好き勝手なタイミングで表示したりすることが上手くできないです。
やはり自前で。。。
