标签:style blog class code c tar
原文:
(c#)SKYPE API项目总结(一)
这个项目的需求:SKYPE软件文字聊天同步翻译,并将翻译后的内容会发送给对方,将对方发给自己的话翻译成自己语种。功能见图:
当点击使用译牛后,在SKYPE软件中,会弹出上面的图片,点击允许后此插件将可以对SKYPE进行操作,界面将变成上图右侧图片。
双击在线好友将出现聊天对话框:
这里发的话,SKYPE软件也会同步:
这个SKYPE小插件主要用到微软在线翻译api和SKYPE API,微软在线翻译参考使用文档 ,
skype
api下载地址,执行文件夹里的reg.bat对此dll进行注册后,方可使用。Skype4COM.dll的引用请参考于小章的博客,接下来我将总结下这个小插件用到的一些知识点。
1.软件界面:
软件界面使用的是常用的DotNetBar破解的.dll类库的下载地址。
2.翻译接口的使用:
利用翻译接口进行翻译的功能制作成了一个WebService,因为考虑到翻译接口API里共用一个APP_ID,首先在自己的WS中引用微软在线翻译的web_service.
代码如下:
public class WS_Translate : System.Web.Services.WebService
{
string appId = System.Configuration.ConfigurationManager.AppSettings["Application_id"];
ServiceRefer.LanguageServiceClient client = new ServiceRefer.LanguageServiceClient();//微软在线翻译的web service
[WebMethod(Discription="获取翻译结果
参数:string text(要翻译的文本), string from(该文本的语言代码), string to(要翻译成的目标语言代码)
返回:string (翻译后的文本)")]
public string GetTranslateResult(string text,string from,string to)
{
string resulte=client .Translate (appId ,text ,from,to,"text/html","general");
return resulte;
}
[WebMethod(Discription="返回语言代码
参数:无
返回:string[]")]
public string[] GetLanguagesCode() { string[] LanguagesCode = client.GetLanguagesForTranslate(appId); return LanguagesCode; }
[WebMethod(Discription="根据提供的显示语言类型,返回对应该语言的语言名称列表。
参数:string localeLanguage
返回:string[]")]
public string[] GetLanguage() { string[] LanguagesName = client.GetLanguageNames(appId,"zh-CHS", GetLanguagesCode());//"zh-CHS"简体中文
return LanguagesName; }
}
skype api工具类代码如下:
namespace YiNiu
{
///
/// Skype工具
///
public class SkypeTool
{
///
/// Skype对象
///
public Skype Skype { get; set; }
///
/// 当前用户
///
public User CurrentUser
{
get
{
try
{
return this.Skype.CurrentUser;
}
catch
{
return null;
}
}
}
///
/// 当前用户的资料
///
public Profile CurrentUserProfile { get { return this.Skype.CurrentUserProfile; } }
///
/// 我的语言种类
///
public String MyCode { get { return this.CurrentUser .LanguageCode ; } }
///
/// 在线好友
///
public UserCollection Friends { get { return this.Skype.Friends ; } }
///
/// 连接状态
///
public TOnlineStatus Status { get { return this.Skype.CurrentUser.OnlineStatus; }}
///
/// 是否Skype正在运行
///
public bool IsSkypeRunning { get { return this.Skype.Client.IsRunning; } }
///
/// 消息状态变化时
///
public event _ISkypeEvents_MessageStatusEventHandler MessageStatus;
///
/// 在线用户状态变化时
///
public event _ISkypeEvents_OnlineStatusEventHandler OnlineStatus;
///
/// 实例化WebService
///
public TranslateService translate = new TranslateService(ConstStrings.TRANSLATE_WEBSERVICE_URL);
///
/// 构造函数
///
public SkypeTool()
{
this.Skype = new Skype();//实例化Skype对象
this.Skype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(Skype_MessageStatus);//发送信息和接受信息时触发此事件
this.Skype.OnlineStatus += new _ISkypeEvents_OnlineStatusEventHandler(Skype_OnlineStatus);//用户在线状态改变触发此事件
}
///
/// 返回状态列表
///
public DataTable GetStatus()
{
DataTable list = new DataTable();
list.Columns.Add(new DataColumn("Display", typeof(string)));
list.Columns.Add(new DataColumn("Value", typeof(string)));
for (int i = 0; i
/// 返回好友列表
///
///
public string[,] GetFriends()
{
string[,] list = new string[Skype.Friends.Count, 3];
for (int i = 0; i
/// 返回语言列表
///
///
public DataTable GetToLanguage(string code)
{
DataTable list = new DataTable();
list.Columns.Add(new DataColumn("Display", typeof(string)));
list.Columns.Add(new DataColumn("Value", typeof(string)));
List LanguagesName = translate.GetLanguagesName(code);//调用webService
List LanguagesCode = translate.GetLanguagesCode();
for (int i = 0; i
/// 获得某一用户的语言类型
///
///
///
public string GetUserLanguageCode(string fullname)
{
return SetMycode(Skype.get_User(fullname ).LanguageCode.ToString());
}
///
/// 初始化语言
///
///
public string SetMycode(string code)
{
//在Skype中和TranslateSope中汉语的英文code不对应需要转换
if (code == "zh-Hans" || code == "zh")//获取sender.languageCode,汉语是ch,不分简体和繁体
{
code = "zh-CHS";
}
if (code == "zh-Hant")
{
code = "zh-CHT";
}
return code;
}
///
/// 建立聊天
///
/// 好友的用户名handle
public IChat CreateIchat(string friend)
{
IChat ichat = Skype.CreateChatWith(friend);
return ichat;
}
///
/// 状态变化
///
/// 信息
/// 信息状态
private void Skype_MessageStatus(ChatMessage pMessage, TChatMessageStatus Status)
{
if (this.MessageStatus != null)
{
this.MessageStatus(pMessage, Status);
}
}
///
/// 改变用户状态
///
/// 用户在线状态
public void ChangeStatus(string Status)
{
this.Skype.ChangeUserStatus(Skype.Convert.TextToUserStatus(Status));
}
///
/// 启动Skype
///
public bool StartSkype()
{
try
{
if (!this.Skype.Client.IsRunning)
{
this.Skype.Client.Start(false, true);
}
//添加到类,用于控制
this.Skype.Attach(5, false);
return true;
}
catch
{
return false;
}
}
///
/// 用户状态变化事件
///
/// 用户
/// 状态
public void Skype_OnlineStatus(User pUser, TOnlineStatus Status)
{
if (this.OnlineStatus != null)
{
this.OnlineStatus(pUser, Status);
}
}
///
/// 用户在线状态改变成"online"格式
///
public string TextSataus(TOnlineStatus Status)
{
return this.Skype.Convert.OnlineStatusToText(Status);
}
}
}
这里软件整体的框架就出来了,后面章节再具体介绍细节的处理,软件的全部代码下载
(c#)SKYPE API项目总结(一),搜素材,soscw.com
(c#)SKYPE API项目总结(一)
标签:style blog class code c tar
原文地址:http://www.cnblogs.com/lonelyxmas/p/3733624.html