zoukankan      html  css  js  c++  java
  • QQ是怎样实现好友桌面快捷方式的?

    QQ是怎样实现好友桌面快捷方式的?

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

    但其是怎样实现的呢?让我们一起挖一挖。

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

          

          直接上图,非常明了,只是多解释。

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

            

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

            1)、目标——关联的进程。快捷方式无非是可运行程序的快捷链接。

    给QQ.exe进程创建快捷方式展开属性发现。目标位置内容为:C:Program FilesTencentQQQQProtectBinQQProtect.exe

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

    C:ProgramFilesTencentQQBinQQScLauncher.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: UsersAdministratorAppDataRoamingTencentQQMiscShortcuts。为好友创建桌面快捷方式提供图标支持。QQ不可能将每一个QQ好友的图标都下载到暂时存储文件夹下,那样的话存储和处理都是问题。

    仅仅是会在须要的时候才会存储。图标的下载能够通过类似URLDownloadToFile ()的接口实现。

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

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

            第1点。假设创建了好友的桌面快捷方式,即使我们人为手动更换了名称。如“1234.lnk”改为“5678.lnk”。可是点击删除桌面快捷方式,仍然可以删除。

    前提是好友快捷方式必须还在桌面路径如C:UsersPublicDesktop上。是什么标示了该快捷方式的唯一性?尚不知道。

            第2,假设我们人为删除了好友桌面快捷方式。右击好友仍会出现“生成桌面快捷方式”;可是一旦我们生成了桌面快捷方式。右击好友仅仅会出现“删除桌面快捷方式”。该功能实现的细节非常到位。

            这仅仅是QQ实现的一个小功能,细致留意,这些小功能都极大的方便了我们大众用户的操作。

    也为我们开发者提供了非常好的借鉴和參考。

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

    作者:铭毅天下

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

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


  • 相关阅读:
    OC2-xml文件解析
    python3+selenium入门06-浏览器操作
    python3+selenium入门05-元素操作及常用方法
    Git学习笔记05-撤销修改
    Git学习笔记04-管理修改
    Git学习笔记03-工作区和暂存区
    Git学习笔记02-创建版本库
    Git学习笔记01-安装Git
    Python3学习笔记30-datetime模块
    python3+requests库框架设计08-发送邮件
  • 原文地址:https://www.cnblogs.com/llguanli/p/6932070.html
Copyright © 2011-2022 走看看