2016-01-11 65 views
0

我試圖抓住所有在線Skype用戶的列表,並將其放入名爲lst1的我的listbox中。 我也試圖讓我的工具回答一些命令,如果有人向我發送!news,它會向我發送一條我在代碼中設置的文本。skype4comlib創建朋友列表

這是我到目前爲止所嘗試的,我只是玩弄代碼來學習如何使用skype4comlib

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MetroFramework; 
using MetroFramework.Forms; 
using MetroFramework.Components; 
using SKYPE4COMLib; 
using System.Threading; 

namespace betaskypetool 
{ 
    public partial class Form1 : MetroForm 
    { 
     #region Definitions 
     Skype Merk = new Skype(); 
     private int count = 1; 
     #endregion 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void metroButton1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       this.Merk.Attach(5, true); 
       MessageBox.Show("You are now connected enjoy!", "Tutorial Skype Tool!"); 

      } 
      catch (Exception) 
      { 
       MessageBox.Show("Failed To Connect?\n Be Sure Skype Is Open!", "Tutorial Skype Tool!"); 
      } 
     } 

     private void metroButton2_Click(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusOnline; 
     } 

     private void metroButton3_Click(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusDoNotDisturb; 
     } 

     private void metroButton4_Click(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusAway; 
     } 

     private void metroButton5_Click(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusInvisible; 
     } 

     private void metroButton6_Click(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusOffline; 
     } 

     private void checkBox1_CheckedChanged(object sender, EventArgs e) 
     { 
      if(checkBox1.Checked == true) 
      { 
       timer1.Start(); 
      } 
      else 
      { 
       timer1.Stop(); 
      } 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      this.Merk.CurrentUserStatus = TUserStatus.cusOnline; 
      Thread.Sleep(20); 
      this.Merk.CurrentUserStatus = TUserStatus.cusAway; 
      Thread.Sleep(20); 
      this.Merk.CurrentUserStatus = TUserStatus.cusDoNotDisturb; 
      Thread.Sleep(20); 
      this.Merk.CurrentUserStatus = TUserStatus.cusInvisible; 
      Thread.Sleep(20); 
     } 

     private void metroButton7_Click(object sender, EventArgs e) 
     { 
      foreach(User spamall in Merk.Friends) 
      { 
       Merk.SendMessage(spamall.Handle, "Haiiiii" + spamall.FullName + ",\n" + richTextBox1.Text + "\n\n(cash) Sent From Merk's Tutorial Tool! (cash)"); 
      } 
     } 

     private void richTextBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 
    } 
} 

我希望你明白我的問題,可以幫助我什麼,我需要做的,那些2個功能添加到我的項目

+1

我剛剛建議編輯清理語法給你,但我會建議這真的是兩個問題,一個是關於製作你的在線列表朋友,還有一個正在做出自動迴應。您可以考慮將自動回覆部分分解爲單獨的問題 –

回答

1

你可以得到你的在線好友的集合是這樣的:

var onlineFriends = Merk.Friends.Cast<User>().Where(u => u.OnlineStatus == TOnlineStatus.olsOnline); 

之後,很容易把它們放在ListBox

WPF例如:

foreach (var friend in onlineFriends) 
{ 
    MyListBox.Items.Add(friend.FullName); 
} 

這就是說,我不知道它是否值得花費大量的時間學習,因爲根據該博客文章,微軟並沒有真正支持skype4comlib了。

https://support.skype.com/en/faq/FA12384/how-does-my-3rd-party-application-work-with-skype-and-how-will-changes-to-skype-impact-my-3rd-party-application

由於溝通在這個博客中,由於技術的改進,我們正在爲Skype的經驗,API的某些功能將停止與Skype合作的桌面。例如,使用API​​交付聊天消息將停止工作。

例如,我無法再使用庫發送消息。 PS .:我正在使用Skype 7.17.0.106