QQ是如何实现好友桌面快捷方式的?

QQ是如何实现好友桌面快捷方式的?

        不知道什么时候,QQ推出了好友桌面快捷方式,方便用户和最常保持联系的好友一键联系。核心功能一:若QQ启动了,则双击快捷方式直接打开好友聊天界面;核心功能二:若QQ未启动,则双击快捷方式后启动QQ后打开好友聊天界面。但其是如何实现的呢?让我们一起挖一挖。

一、QQ好友桌面快捷方式操作演示

      

      直接上图,很明了,不过多解释。

二、QQ好友桌面快捷方式的Windows实现

        

        上图是桌面好友快捷方式的几个关键属性,解析如下:

        1)、目标——关联的进程,快捷方式无非是可执行程序的快捷链接。给QQ.exe进程创建快捷方式展开属性发现,目标位置内容为:C:\Program Files\Tencent\QQ\QQProtect\Bin\QQProtect.exe

        这就是QQ的核心进程。而对比好友快捷方式的目标位置内容为:

C:\ProgramFiles\Tencent\QQ\Bin\QQScLauncher.exe" /uin:*********/quicklunch:096275A1A8 3DC509B82E14BEE49552 98B7C1FF2235EB054520E6686E1353FA8ED7219F5CC4213B89

         组成结构为:启动关联进程/自己的QQ/标识好友信息的8016进制值。该组成即是快捷方式能实现与好友直接互联的核心。

        2)、打开文件位置——EXE进程的路径即QQScLauncher.exe的安装路径。

        3)、更改图标——图标的存储路径,即是好友的头像图标的存储路径,如下图所示:

        基本断定为32MD5.ico的形式存储的好友头像。

       Windows下实现桌面快捷方式需要用到两个COM接口IShellLink和IPersistFile的部分函数。

       1)设置目标:HRESULT SetPath(LPCTSTR pszFile);    

       2)更改图标: HRESULT SetIconLocation(LPCTSTRpszIconPath,int iIcon);

       3)保存快捷方式:HRESULT Save( LPCOLESTRpszFileName, BOOL fRemember);

三、QQ好友桌面快捷方式的实现流程

       个人推断的大致流程如下:

      

       第1步:实现QQScLauncher.exe与QQProtect.exe的通信。

       QQProtect.exe负责多用户QQ的登录,而QQScLauncher.exe需要通过QQProtect.exe得知当前创建桌面快捷方式的好友的QQ号是否已经启动

       1)如果QQ没有启动,则调用QQProtect.exe启动QQ而后打开好友界面;

       2)如果QQ启动了,则直接打开好友页面。

       两进程之间可以通过共享内存方式实现通信。

       第2步:下载QQ好友图像存储到安装路径下。       

       存储路径为C: \Users\Administrator\AppData\Roaming\Tencent\QQ\Misc\Shortcuts。为好友创建桌面快捷方式提供图标支持。QQ不可能将每个QQ好友的图标都下载到临时存储目录下,那样的话存储和处理都是问题。只是会在需要的时候才会存储。图标的下载可以通过类似URLDownloadToFile ()的接口实现。

       第3步:通过COM接口IShellLink和IPersistFile的实现创建好友桌面快捷方式。详细函数参见第二部分。

四、测试好友桌面快捷方式效果回馈

        第1点,如果创建了好友的桌面快捷方式,即使我们人为手动更换了名称。如“1234.lnk”改为“5678.lnk”,但是点击删除桌面快捷方式,仍然能够删除。前提是好友快捷方式必须还在桌面路径如C:\Users\Public\Desktop上。是什么标示了该快捷方式的唯一性?尚不知道。

        第2,如果我们人为删除了好友桌面快捷方式,右击好友仍会出现“生成桌面快捷方式”;但是一旦我们生成了桌面快捷方式,右击好友只会出现“删除桌面快捷方式”。该功能实现的细节很到位。

        这只是QQ实现的一个小功能,仔细留意,这些小功能都极大的方便了我们大众用户的操作。也为我们开发人员提供了很好的借鉴和参考。

        2014-4-26 pm0:40 思于家中床前

作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/24503161

如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!


  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭毅天下

和你一起,死磕Elastic!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值