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号/标识好友信息的80个16进制值。该组成即是快捷方式能实现与好友直接互联的核心。

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

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

基本断定为32位MD5值.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

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

时间: 2024-11-07 10:56:21

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

模仿添加QQ好友桌面快捷方式

1 /** 2 * 3 * @param context 4 * @param tname 桌面快捷方式的名字 5 * @param icon 好友头像 6 */ 7 public static void addShortCut(Context context, String tname, int icon) { 8 // 安装的Intent 9 Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT&

Android桌面快捷方式

Android创建桌面的快捷方式 概述 :创建桌面快捷方式相当与创建一个程序的入口,就像我们程序在安装完毕后会自动创建一个图标到桌面.其实创建桌面快捷方式跟创建一个程序入口差不多,但是像QQ会话一样创建一个QQ好友的会话快捷方式,就得动态的创建图标,名字了. 1.首先权限是必不可少的 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 2.然后就是在你项目配置

C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标

#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设置成自己想要的图标,就想QQ安装之后在桌面的快捷方式一样 2012-08-25 09:21网友采纳 在创建快捷方式的时候是可以指定图标的啊.当然你最好把那图标文件(扩展名是ico)放在打包的文件夹中,不然你是不能指定的.

Android桌面快捷方式那些事与那些坑

原文来自http://blog.zanlabs.com/2015/03/14/android-shortcut-summary/ 将近二个多月没写博客了. 之前一段时间一直在搞红包助手,就没抽时间写博客,但写这个真的是很好玩.没想到居然在Android上实现模拟点击,从而实现自动抢红包,有兴趣的同学可以参考https://github.com/waylife/RedEnvelopeAssistant ,代码已经开源. 红包助手还有一些问题,但是现在基本的抢红包基本没问题了.目前正在对它进行优化以

java实现软件程序开机自动启动和创建程序的桌面快捷方式源代码

一.java实现.exe程序的开机自动启动 1.描述 自己在eclipse编写的java项目用exe4j Wizard打包成一个.exe可执行文件,并让用户可以开机自动启动. 2.步骤 1.   获得本软件中.exe可执行文件的路径 2.   在Windows系统中的开机启动栏存放该.exe可执行文件的快捷方式,即可实现开机自动启动. 3.代码 private void startFolderMethod() { String path = System.getProperty("user.di

创建ride桌面快捷方式及打不开原因分析

使用命令安装RobotFramework-ride出现没有桌面快捷方式,对于习惯使用桌面快捷方式打开应用的用户来说,是一件很麻烦的事情.使用命令来打开ride,首先你要先在cmd进入目录,比如:D:\Python27\Scripts,然后使用python ride.py的命令来打开. 下面介绍一下如何创建ride的桌面快捷方式: 第一步,在桌面点击鼠标右键,新建一个"快捷方式",在弹出框输入:D:\Python27\pythonw.exe -c "from robotide

android桌面快捷方式跳转到指定activity

AndroidManifest.xml 应用主入口配置: <activity android:name="com.*.cust.contacts.MainActivity" android:exported="true" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <

手把手教你在ubuntu下创建桌面快捷方式

习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式,就OK了.对于ubuntu下该怎样创建桌面快捷方式呢?下面以创建eclipse的快捷方式为例,简单介绍一下. 环境: 1)系统版本:Ubuntu 14.04 2)桌面环境:Unity 3)已经下载并解压eclipse(免安装)到/opt目录下 详细步骤: 1)新建文件eclipse.desktop,命令如下: sudo vim /usr/share/applications/ec

ubuntu下创建eclipse桌面快捷方式

1.终端代码 : cd /home/xyh/Desktop sudo gedit eclipse.desktop 然后在弹出的文件中输入: [cpp] view plaincopyprint? [DesktopEntry] Encoding=UTF-8 Name=eclipse Comment=Eclipse IDE Exec=/usr/local/eclipse/eclipse_SDK/eclipse Icon=/usr/local/eclipse/eclipse_SDK/icon.xpm T