引入 MessengerAPI
在项目中添加 COM 引用 "Messenger API Type Library",注意该 COM 的文件路径应该是 "c:\program file\MSN Messenger\msnmsgr.exe"。如果不是可以使用下面的命令注册该 COM。
C:\WINDOWS\system32\URTTemp>regtlib.exe "c:\program files\msn messenger\msnmsgr.exe\2"
然后添加名字空间,创建 Messenger 对象。
using MessengerAPI;
// ...
MessengerClass msn = new MessengerClass();
1. 登录// 登录 (我用 Windows Live Messenger 8 不起作用。晕~~~)
//msn.Signin(0, "abc@hotmail.com", "pasword");
// 自动登录 (使用你保存的用户名和密码自动登录)
//msn.AutoSignin();
// 注销
//msn.Signout();
2. 主窗体可显示、关闭主窗体,获取或设置主窗体位置、大小。
IMessengerWindow mainForm = msn.Window as IMessengerWindow;
mainForm.Show();
//mainForm.Close();
//mainForm.Left = 1;
//mainForm.Top = 1;
//mainForm.Height = 100;
//mainForm.Width = 100;
3. 个人信息及状态本地用户名称、登录名为只读,没有接口设置个人状态信息。
msn.MyStatus = MISTATUS.MISTATUS_BUSY; // 设置状态
Console.WriteLine(msn.MyFriendlyName); // 名称
Console.WriteLine(msn.MySigninName); // 登录名(邮件地址)
4. 联系人组创建组
msn.CreateGroup("我的同事", ((IMessengerServices)msn.Services).PrimaryService);
联系人组
IMessengerGroups groups = msn.MyGroups as IMessengerGroups;
foreach (IMessengerGroup group in groups)
{
Console.WriteLine(group.Name);
// 删除组
if (group.Name == "我的同事") groups.Remove(group);
// 显示该组下所有联系人
foreach (IMessengerContact c in (IMessengerContacts)group.Contacts)
Console.WriteLine("\t{0}", c.SigninName);
}
5. 联系人添加联系人。下面的代码将打开添加联系人对话框,可以使用默认联系人地址,也可以为null。
msn.AddContact(0, "abc@hotmail.com");
联系人列表
IMessengerContacts contacts = msn.MyContacts as IMessengerContacts;
foreach (IMessengerContact contact in contacts)
{
Console.WriteLine("{0};{1};{2};{3}", contact.FriendlyName, contact.SigninName, contact.Status, contact.Blocked);
// 删除联系人
if (contact.SigninName == "abc@hotmail.com") contacts.Remove(contact);
}
获取联系人对象 (在很多操作中需要使用联系人对象作为参数)
IMessengerContact contact = msn.GetContact("abc@hotmail.com", msn.MyServiceId) as IMessengerContact;
6. 发送消息MessengerAPI 取消了一些功能,其中就包括发送消息和消息事件。我们可以使用 System.Windows.Forms.SendKeys 向聊天窗口发送按键来完成消息发送。
IMessengerContact contact = msn.GetContact("abc@hotmail.com", msn.MyServiceId) as IMessengerContact;
if (contact != null)
{
// 打开聊天窗口
IMessengerConversationWnd dialog = msn.InstantMessage(contact) as IMessengerConversationWnd;
dialog.Show(); // 确保聊天窗口为当前活动窗口。
//Thread.Sleep(1000); // 在 ConsoleApplication 中适当延迟,否则 SendKeys 好像时灵时不灵。
string s = "Hello, World! " + DateTime.Now.ToString();
SendKeys.SendWait(s); // 发送消息按键。
SendKeys.SendWait("{ENTER}"); // 回车发送。
// 邀请其他人加入
//dialog.AddContact(msn.GetContact("xxx@hotmail.com", msn.MyServiceId));
// 查看当前聊天联系人列表
//foreach (IMessengerContact c in (IMessengerContacts)dialog.Contacts)
//{
//Console.WriteLine(c.SigninName);
//}
// 关闭聊天窗口
//dialog.Close();
}
7. 其他// 打开音视频设置窗口
//msn.MediaWizard(0);
// 打开当前登录关联的 Hotmail 邮箱。
//msn.OpenInbox();
// 打开选项窗口
//msn.OptionsPages(0, MOPTIONPAGE.MOPT_ACCOUNTS_PAGE);
// 获取文件保存目录
//Console.WriteLine(msn.ReceiveFileDirectory);
// 打开 Hotmail 网页,给指定联系人写邮件。
//msn.SendMail(contact);
// 开启视频通讯
//msn.StartVideo(contact);
// 开启音频通讯
//msn.StartVoice(contact);
// 查看联系人档案文件
//msn.ViewProfile(contact);
8. 事件事件使用比较简单,看名称就知道干什么用的。
public event OnAppShutdown;
public event OnContactAddedToGroup;
public event OnContactBlockChange;
public event OnContactFriendlyNameChange;
public event OnContactListAdd;
public event OnContactListRemove;
public event OnContactPagerChange;
public event OnContactPhoneChange;
public event OnContactPropertyChange;
public event OnContactRemovedFromGroup;
public event OnContactStatusChange;
public event OnEmoticonListChange;
public event OnGroupAdded;
public event OnGroupNameChanged;
public event OnGroupRemoved;
public event OnIMWindowContactAdded;
public event OnIMWindowContactRemoved;
public event OnIMWindowCreated;
public event OnIMWindowDestroyed;
public event OnMyFriendlyNameChange;
// 本地用户更改显示图片时触发。
public event OnMyPhoneChange;
public event OnMyPropertyChange;
// 本地用户改变状态时触发(包括与服务连接等系统状态)。
public event OnMyStatusChange;
// 本地用户登录时触发。
public event OnSignin;
// 本地用户注销时触发。
public event OnSignout;
// 关联邮箱接收到新的未读邮件时触发。
public event OnUnreadEmailChange;
----------
使用以上这些功能只能做些依赖客户端的小玩意,如果要开发一个类似
XiaoI 那样的群恐怕要使用
DotMSN 才行。另外,还可以考虑使用 APIHook 进行一些更高级的功能开发。
分享到:
相关推荐
MSN Messenger API允许开发者访问和控制MSN Messenger的功能,包括发送和接收消息、添加和删除联系人、查看在线状态、发送文件、参与多人聊天等。开发者可以通过这个API来创建插件、增强版客户端或者其他基于MSN ...
4. **替代方案**:由于MSN服务已停用,考虑使用现代的通讯API,如Skype API或微软提供的其他云服务API。 总的来说,尽管MSN API现在已过时,但它代表了一个时代的网络通讯技术,并为后来的即时通讯API和平台奠定了...
在MSN案例中,API提供了对MSNMessenger服务的访问权限,允许开发人员获取或操作用户数据,如好友列表。 2. **身份验证**:在使用MSN API时,开发者首先需要进行身份验证,以证明他们有权访问特定的用户账户。这通常...
【MSN Messenger模仿界面】 在IT领域,特别是软件开发中,模仿流行应用的界面设计是一种常见的学习方式。"MSN Messenger模仿界面"就是一个实例,它提供了一种通过Visual C++(简称VC)来实现类似MSN Messenger登录...
4. **部署**:将应用上传至服务器,确保它可以被MSNMessenger用户访问和使用。 5. **调试**:测试应用的性能,解决可能出现的错误和问题。 6. **竞赛与推广**:可能会有活动应用的构建比赛,以鼓励创新和提高应用的...
10. **协议实现**:MSN Messenger使用了专有的协议,开发者需要深入理解这个协议并实现它的Java版本。这可能涉及到解析和构造特定的网络报文。 总结来说,用Java实现MSN Messenger的功能是一项复杂的任务,需要掌握...
5. `MsnMessenger.login()` 和 `MsnMessenger.logout()`:登录和注销MSN服务。 **总结** 通过JML库,Java开发者能够轻松地构建具备类似MSN Messenger功能的应用程序。这个DEMO代码提供了一个基础框架,开发者可以...
【标题】"MSNMessenger的完整克隆"指的是一个软件项目,它旨在模仿或复制微软的MSN Messenger服务的功能和用户体验。MSN Messenger是微软在互联网早期推出的一款即时通讯软件,允许用户进行文字聊天、语音通话、视频...
5. **网络通信**:虽然原始的MSN_Messenger使用了专有的协议进行通信,但模仿时,开发者可以选择使用标准的IM协议,如XMPP或自定义简单的TCP/IP协议,实现用户之间的消息传递。 6. **多线程与异步处理**:为了保证...
使用 DotMSN 开发 MSN 机器人需要创建一个 Messenger 对象,并使用该对象来连接 MSN 服务器。连接成功后,可以使用 Messenger 对象来同步好友列表、发送消息、接收消息等。 4. Messenger 对象的使用 Messenger ...
首先,为了获取MSN Messenger的联系人列表,我们需要理解MSN Messenger使用的协议。MSN Messenger使用了专有的实时通信协议,称为“简单对象访问协议”(Simple Object Access Protocol, SOAP)以及“XML数据交换格式...
在这个场景中,开发人员可能需要使用MSN Messenger提供的API(应用程序接口)来获取用户的联系人信息。MSN Messenger曾使用微软的WLM(Windows Live Messenger)协议,这通常涉及XML和HTTP协议,开发者需要理解和...
- **用途**:可以用来连接到MSNMessenger服务器或其他网络资源。 - **`WNetCancelConnection2`** - **功能**:结束一个网络连接。 - **用途**:当不再需要与网络资源通信时,可以调用此函数来断开连接。 3. **...
开发者可以从中了解到如何利用这些API来创建和管理MSN Messenger的相关活动,如发送消息、接收状态更新、添加联系人等。 在使用MSN SDK时,开发者首先需要了解核心概念,例如: 1. **身份验证**:API提供了用户...
1. **网络通信协议**:MSN Messenger 使用了专有的协议(如Simple Object Access Protocol, SOAP)来实现客户端与服务器之间的通信。理解这些协议的工作方式对于构建类似的应用至关重要,包括消息发送、状态更新和...
但如果你需要处理遗留的MSN数据,可以考虑使用旧版的MSN Messenger API,这通常涉及到对XML文件的解析,因为好友列表通常会以XML格式保存在本地。然而,微软并未公开提供现代版本的API来获取Skype或旧版MSN的好友...
5. **XML-RPC或SOAP协议**:早期的MSN Messenger API可能使用XML-RPC或SOAP协议进行通信,这两种协议都是在分布式环境中交换结构化数据的标准方式。 6. **开源文化**:Google Code代表了开源软件的协作精神,这个...