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