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
如果感覺本文對您有協助,請點擊‘頂’支援一下,您的支援是我堅持寫作最大的動力,謝謝!