1. 程式人生 > >QQ是怎樣實現好友桌面快捷方式的?

QQ是怎樣實現好友桌面快捷方式的?

users blog href 展開 路徑 ros 例如 兩個 處理

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

假設感覺本文對您有幫助。請點擊‘頂’支持一下。您的支持是我堅持寫作最大的動力,謝謝!


QQ是怎樣實現好友桌面快捷方式的?