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
組成結構為:啟動關聯進程/自己的
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
假設感覺本文對您有幫助。請點擊‘頂’支持一下。您的支持是我堅持寫作最大的動力,謝謝!
QQ是怎樣實現好友桌面快捷方式的?