/// <summary> /// 新規メッセージが到着したら、メッセージリストに追加します。 /// </summary> /// <param name="skype"></param> void AddNewMessageToList(AxSkype skype) { skype.MessageStatus += new AxSKYPE4COMLib._ISkypeEvents_MessageStatusEventHandler((a, b) => { ChatMessageClass chat = b.pMessage as ChatMessageClass; //既に存在するメッセージは無視 if (AlreadyReceivedMessage.Where(i => i == chat.Id).Count() >= 1) { return; } AlreadyReceivedMessage.Add(chat.Id); var list = GetChatListWindow(chat.Chat.Blob, chat.Chat.FriendlyName); list.Items.Add(GetChatFormattedMessage(chat)); //スクロールバーを一番下にする if (autoScrollCheckBox.CheckState == CheckState.Checked) { list.SelectedIndex = list.Items.Count - 1; } //メッセージを保存しておきます if (!Messages.ContainsKey(chat.Chat.Blob)) { Messages.Add(chat.Chat.Blob, new List<IChatMessage>()); } Messages[chat.Chat.Blob].Add(chat); }); }
/// <summary> /// チャットをバルーンとして表示させるようにします。 /// </summary> /// <param name="skype"></param> void AddMessageStatusHandler(AxSkype skype) { skype.MessageStatus += new AxSKYPE4COMLib._ISkypeEvents_MessageStatusEventHandler((a, b) => { ChatMessageClass chat = b.pMessage as ChatMessageClass; if (chat.Status == TChatMessageStatus.cmsReceived) { notifyIcon.BalloonTipTitle = chat.Sender.Handle + "(" + chat.Chat.FriendlyName + ")"; notifyIcon.BalloonTipText = chat.Body; notifyIcon.ShowBalloonTip(1000); // 最近受信したチャットのブロブ RecentReceivedChatBlob = chat.Chat.Blob; } }); }