skypeプログラミング続き
skypeapi com wrapperを使った時にCOMからイベントを拾う方法.ドキュメントだとイベントハンドラ用のインタフェース名が"IAccessEvents"になっていたが,やってみたらそんなインタフェース名がなかった.Ildasmを使ってskypeapilib.dllを調べてみたら"_IAccessEvents"だった.んでもって,自分のステータス,つまり,オンラインとか離籍中とか,を調べるプログラミングはこんな感じになった.
//skypevent.cs // Ildasm skypeapilib.dll // TlbImp \windows\system32\SkypeAPI.dll // csc /r:SKYPEAPILib.dll skypevent.cs using System; using System.Text; using SKYPEAPILib; public class MyApp{ public static void Main(string[] args) { Access ao = new Access(); ao.Connect(); ao.UserStatusChanged += new _IAccessEvents_UserStatusChangedEventHandler(StatusChange); Console.WriteLine(ao.CurrentUserStatus); ao.CurrentUserStatus = SkypeOnlineStatus.olsDoNotDisturb; String s; Console.Write("Enter to quit "); s = Console.ReadLine(); while (s != ""){ Console.Write("Enter to quit "); s = Console.ReadLine(); } } static void StatusChange(SkypeOnlineStatus status) { Console.WriteLine(status); } }