본문 바로가기
정보기술/일반

Windwos Live Messenger 에서 Growl Notification 보내기

by fermi 2012. 3. 21.
Requirements:

1. Messenger Plus
http://www.msgplus.net
2. growlnotify
http://www.growlforwindows.com/gfw/help/growlnotify.aspx

참고:

1. https://groups.google.com/forum/?fromgroups#!topic/growl-for-windows/MRa2hTTpKto
2. Messenger Plus Script Reference Docs
http://mpscripts.net/docs/

설정방법:

1. Messenger Plus 설치
2. Messenger Plus 의 Preference 창에서 Plugins - Plus! Plugins 에 새 플러그인 추가
3. 아래와 같이 스크립트를 작성하여 Growl.js 저장하고 실행

function OnEvent_Initialize(MessengerStart)
{
}

function OnEvent_Uninitialize(MessengerExit)
{
}

function OnEvent_ChatWndReceiveMessage(ChatWnd, Origin, Message, MsgKind){
if (Origin)
    var Org = Origin;
else
    var Org = "Unknown Contact";
switch (MsgKind){
    case 0:
        var Kind = "Unknown";
        break;
    case 1:
        var Kind = "Text";
        break;
    case 2:
        var Kind = "Wink";
        break;
    case 3:
        var Kind = "Voice";
        break;
    case 4:
        var Kind = "Search";
        break;
    case 5:
        var Kind = "Find";
        break;
    case 6:
        var Kind = "Offline Text";
        break;
}
var shell = new ActiveXObject("wscript.shell");
//var cmd = '"C:\\Program Files\\Growl for Windows\\growlnotify.exe" "' + Message + '" /t:"' + Origin + '"';
var cmd = '"C:\\Program Files\\Growl for Windows\\growlnotify.exe" "' + Message + '" /t:"' + Org + ' (' + Kind + ')"';
shell.Run(cmd);
}

function OnEvent_ChatWndCreated(ChatWnd){
var Contacts = ChatWnd.Contacts;
var e = new Enumerator(Contacts);
var Contact = e.item();
if (Contact)
    var Origin = Contact.Name;
else
    var Origin = "Unknown Contact";
var shell = new ActiveXObject("wscript.shell");
var cmd = '"C:\\Program Files\\Growl for Windows\\growlnotify.exe" "' + "WndCreated" + '" /t:"' + Origin + '"';
shell.Run(cmd);
}

문제점:
메신저로 들어오는 메세지는 잘 작동하나, SMS로부터 들어오는 메세지는 Growl 메세지가 생성되지 않음.  ChatWndReceiveMessage 이벤트가 발생하지 않는 것인지, Origin 변수가 누락되어 문제가 있는 것인지 확인 중.

-> 테스트를 위해서 컴퓨터에서 보낸 SMS가 아닌 외부에서 들어온 SMS는 대부분 정상 작동하고 있음.