介紹
如果你曾查過微軟的知識庫文章的話,一定有這樣的不爽經歷:先用浏覽器訪問msdn.microsoft.com,在那個小小的搜索編輯框中輸入文章號碼,然後等待查詢結果返回,最後還要點擊搜索結果中至少一篇文章的鏈接。這樣做耽誤相當多的時間。現在使用本文提供的工具後,一切都變得簡單了。
這個工具叫做KBLaunch,它是個對“運行”命令對話框的外殼擴展,只要在“運行”菜單的編輯框中輸入:“?+微軟知識庫文章號”,見下圖:
當你按下“確定”按鈕,KBLaunch便會啟動默認的浏覽器並顯示你輸入的微軟知識庫文章。
KBLaunch的實現方法
KBLaunch將自己注冊為外殼執行鉤子。外殼執行鉤子在兩種情況下被調用:
1、 當使用ShellExecute() 或 ShellExecuteEx()來運行一個程序時。包括在資源管理器中雙擊一個文件。
2、 當用戶在“運行”對話框中輸入內容時。
有趣的是用戶在“運行”對話框中怎麼可以輸入非可運行程序名呢?。IE在這方面是個很好的例子——如果輸入一個URL(以http,ftp,www,或其它通用前綴),IE提供的外殼擴展鉤子解釋前綴並啟動默認浏覽器。
而KBLaunch找到前綴“?q”並檢查命令行的其余部分是否為正數,KBLaunch構造微軟知識庫文章的URL並用ShellExecute()運行默認的浏覽器,將構造好的URL傳遞給它。注意這是使用IE特有的外殼擴展鉤子啟動浏覽器,所以要安裝IE3或更高版本。
外殼執行鉤擴展其實沒什麼復雜的——只要實現一個接口,並且這個接口只有一個方法。這個方法就是IShellExecuteHook::Execute(),它接受一個SHELLEXECUTEINFO結構指針,這個結構包含一組運行程序的信息。Execute()句柄解析命令行並運行浏覽器。具體代碼在例子工程的KBLaunchShlExt.cpp文件中。請參考。
本文配套源碼