Register protocol
tencent:// thunder:// 是 騰訊 和 迅雷 的協(xié)議,即頁面上或地址欄里的鏈接只要輸入帶有 tencent://… 的協(xié)議,就會自動調(diào)用一個已寫好的程序執(zhí)行該協(xié)議的操作。 或者是打開頁面,迅雷的是下載資源的鏈接。
通過微軟的說明,知道這是Register protocol,對于 Windows、Linux 和 OS X 操作系統(tǒng)都可以注冊這樣的協(xié)議。比如說Windows,其實只需寫入注冊表,即可實現(xiàn)協(xié)議與執(zhí)行程序的關(guān)聯(lián)。
DLL命令表
.版本 2.DLL命令 RegCreateKey, 邏輯型, "Advapi32.dll", "RegCreateKeyA", 公開 .參數(shù) hKey, 整數(shù)型 .參數(shù) lpSubKey, 文本型 .參數(shù) phkResult, 整數(shù)型, 傳址.DLL命令 RegCloseKey, , "Advapi32.dll", "RegCloseKey", 公開 .參數(shù) hKey, 整數(shù)型.DLL命令 RegSetKeyValue, 邏輯型, "Advapi32.dll", "RegSetValueExA", 公開 .參數(shù) hKey, 整數(shù)型 .參數(shù) lpSubKey, 文本型 .參數(shù) lpValueName, 文本型 .參數(shù) dwType, 整數(shù)型 .參數(shù) lpData, 文本型 .參數(shù) cbData, 整數(shù)型.DLL命令 sprintf, 整數(shù)型, "msvcrt.dll", "@sprintf" .參數(shù) s, 文本型, 傳址 .參數(shù) foramt, 文本型 .參數(shù) arg, 文本型.DLL命令 GetCommandLine, 文本型, "kernel32.dll", "GetCommandLineA", 公開
常量數(shù)據(jù)表
.版本 2.常量 HKEY_CLASSES_ROOT, "2147483648".常量 REG_SZ, "1"
注冊自定義協(xié)議Register protocol
.版本 2.程序集 程序集1.子程序 _啟動子程序, 整數(shù)型, , 本子程序在程序啟動后最先執(zhí)行.局部變量 pszArgv, 文本型, , "0".局部變量 szExePath, 文本型.局部變量 i, 整數(shù)型.局部變量 Schemes, 文本型標(biāo)準(zhǔn)輸出 (, “Windows 注冊自定義協(xié)議演示:”, #換行符)取命令行 (pszArgv).如果真 (取數(shù)組成員數(shù) (pszArgv) ≥ 1) ' 如果啟動參數(shù)小于1,那說明并非由協(xié)議啟動 .計次循環(huán)首 (取數(shù)組成員數(shù) (pszArgv), i) .如果真 (取文本左邊 (到小寫 (pszArgv [i]), 6) = “eyuyan:”) Schemes = 取文本右邊 (pszArgv [i], 取文本長度 (pszArgv [i]) - 8) ' 協(xié)議數(shù)據(jù) 標(biāo)準(zhǔn)輸出 (, “收到協(xié)議數(shù)據(jù): ”, Schemes, #換行符) ' 在這里就可以處理接收到的協(xié)議數(shù)據(jù)了 標(biāo)準(zhǔn)輸出 (, “按回車鍵結(jié)束程序!”, #換行符) 標(biāo)準(zhǔn)輸入 () 返回 (0) .如果真結(jié)束 .計次循環(huán)尾 ().如果真結(jié)束標(biāo)準(zhǔn)輸出 (, “注冊協(xié)議頭: Ayana ”, #換行符, “在地址欄或者瀏覽器中輸入: Ayana:hello%20world ,將會觸發(fā)接收程序!”, #換行符)szExePath = 取運行目錄 () + “/” + 取執(zhí)行文件名 ()登錄協(xié)議 (“eyuyan”, szExePath + “,0”, szExePath)標(biāo)準(zhǔn)輸出 (, “按回車鍵結(jié)束程序!”, #換行符)標(biāo)準(zhǔn)輸入 ()返回 (0).子程序 登錄協(xié)議, , 公開, 注冊自定義windows 協(xié)議.參數(shù) 協(xié)議頭, 文本型, , 協(xié)議頭: 比如 schemes.參數(shù) 圖標(biāo)文件, 文本型, , 圖標(biāo)文件.參數(shù) 協(xié)議接收程序, 文本型, , 協(xié)議接收程序.局部變量 根HKEY, 整數(shù)型, , , 根HKEY.局部變量 文本, 文本型.局部變量 結(jié)果, 文本型文本 = 取空白文本 (60)sprintf (文本, “%sProtocol”, 協(xié)議頭)RegCreateKey (#HKEY_CLASSES_ROOT, 協(xié)議頭, 根HKEY)RegSetKeyValue (#HKEY_CLASSES_ROOT, 協(xié)議頭, “”, #REG_SZ, 文本, 取文本長度 (文本))RegSetKeyValue (#HKEY_CLASSES_ROOT, 協(xié)議頭, “URL Protocol”, #REG_SZ, 協(xié)議接收程序, 取文本長度 (協(xié)議接收程序))RegSetKeyValue (根HKEY, “DefaultIcon”, “”, #REG_SZ, 圖標(biāo)文件, 取文本長度 (圖標(biāo)文件))RegSetKeyValue (根HKEY, “shell”, “”, #REG_SZ, “”, 0)RegSetKeyValue (根HKEY, “shell/open”, “”, #REG_SZ, “”, 0)結(jié)果 = 協(xié)議接收程序 + “ ” + #引號 + “%1” + #引號RegSetKeyValue (根HKEY, “shell/open/command”, “”, #REG_SZ, 結(jié)果, 取文本長度 (結(jié)果))RegCloseKey (根HKEY)
運行結(jié)果:

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VeVb武林網(wǎng)的支持。
新聞熱點
疑難解答