2016-10-14 4 views
1

Итак, я знаю, что этот API довольно старый и очень недокументированный, именно поэтому я задаю вопрос SO, поэтому я хотел знать, как я могу выбрать чат в Skype, используя C# Skype Desktop API, я сделал некоторые глядя вокруг, но большинство людей, кажется, использует WinForms, чтобы сделать их приложение, мое только простое консольное приложение, код:Skype C# API Выберите чат

Skype Skype = new Skype(); 
Skype.Attach(5, true); 

Skype.Chat.SendMessage("Hello ??"); 

Parser.Pause(); 

на время выполнения, я, конечно, получить исключение говорит мне нужно выбрать чат, но я не уверен, как я могу это сделать, я посмотрел here, но это не очень помогло мне.

Есть ли способ легко общаться с чатом с использованием определенного кода? и т.д. ... Спасибо!

ответ

2

Я построил этот фрагмент кода, который должен помочь вам ...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Remoting.Channels; 
using System.Text; 
using System.Threading.Tasks; 
using SKYPE4COMLib; 

namespace skypeExperiment 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Skype s = new Skype(); 
      s.Attach(); 
      if (!s.Client.IsRunning) 
      { 
       // start minimized with no splash screen 
       s.Client.Start(true, true); 
      } 

      // wait for the client to be connected and ready 
      //you have to click in skype on the "Allow application" button which has popped up there 
      //to allow this application to communicate with skype 
      s.Attach(6, true); 

      //this will print out all the chat names to the console 
      //it will enumerate all the chats you've been in 
      foreach (Chat ch in s.Chats) 
      { 
       Console.WriteLine(ch.Name); 
      } 

      //pick one chat name of the enumerated ones and get the chat object 
      string chatName = "#someskypeuser/someskypeuser;9693a13447736b9"; 
      Chat chat = GetChatByName(s, chatName); 
      //send a message to the selected chat 
      if (chat != null) 
      { 
       chat.SendMessage("test"); 
      } 
      else 
      { 
       Console.WriteLine("Chat with that name was not found."); 
      } 

      Console.WriteLine("Press any key to continue..."); 
      Console.ReadKey(); 
     } 

     private static Chat GetChatByName(Skype client, string chatName) 
     { 
      foreach (Chat chat in client.Chats) 
      { 
       if (chat.Name == chatName) return chat; 
      } 
      return null; 
     } 


    } 
} 

Вместо того, чтобы использовать существующий объект чата, вы можете создать новый объект чат с помощью метода

Chat chat = s.CreateChatWith("name of the user to chat with"); 
chat.SendMessage("test"); 

Вы можете создать Групповой чат с:

Group mygroup = s.CreateGroup("mygroup"); 
mygroup.AddUser("user1"); 
mygroup.AddUser("user2"); 
Chat myGroupChat = s.CreateChatMultiple(mygroup.Users); 
myGroupChat.SendMessage("test"); 

или создать способ извлечения группы по отображаемому имени

private static Group GetGroupByDisplayName(Skype client, string groupDisplayName) 
{ 
    foreach (Group g in client.Groups) 
    { 
     if (g.DisplayName == groupDisplayName) 
     { 
      return g; 
     } 
    } 
    return null; 
} 

и использовать его затем как:

Group majesticSubwayGroup = GetGroupByDisplayName("majesticsubway"); 
Chat majesticSubwayGroupChat = s.CreateChatMultiple(majesticSubwayGroup.Users); 
majesticSubwayGroupChat.SendMessage("test"); 
+0

Так что же для группового чата? Это пример скриншота группы: http://prntscr.com/ctnr41 Я думал, что он сможет выбрать группу по идентификатору приглашения или по имени группы, например 'majesticsubway'? :-) – Jek

+0

Позвольте мне уточнить ответ –

+0

@Jek Я обновил ответ –

Смежные вопросы