C#一個讓mpv能夠使用網址呼叫的工具

 首先我先說說原理

我們需要在登入表 註冊 通用協議 讓電腦能明白 使用這個協議要呼叫甚麼程式

我們這邊使用已我製作的Bat檔 來當範例

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@echo off


REM 獲取當前腳本的目錄

set "SCRIPT_DIR=%~dp0"


REM 設置註冊表條目

reg add "HKCR\mpvjbk" /ve /d "URL:mpvJBK Protocol" /f

reg add "HKCR\mpvjbk" /v "URL Protocol" /t REG_SZ /d "" /f

REM reg add "HKCR\mpvjbk\DefaultIcon" /ve /d "\"%SCRIPT_DIR%YourApplicationIcon.ico\"" /f

reg add "HKCR\mpvjbk\shell\open\command" /ve /d "\"%SCRIPT_DIR%mpvjbk.exe\" \"%%1\"" /f


echo 安裝完成!

pause

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我的程式叫做mkvjbk使用這個BAT檔他會抓取我們BAT檔目錄的位置 來註冊 登入檔 並調用此目錄下的我的程式mkvjbk
然後再看看C# 的原始碼
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System.Diagnostics;

namespace mpvjbk
{
    internal class Program
    {
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                string protocol = args[0];
                Uri uri = new Uri(protocol);
                string queryString = uri.Query;
                var parameters = System.Web.HttpUtility.ParseQueryString(queryString);
                string code = parameters["code"];
                if (!string.IsNullOrEmpty(code))
                    mpv(code);
            }
        }
        public static void mpv(string code01)
        {
            string Exe = "mpv";
            string fileName = "mpv_path.config";
            string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

            if (File.Exists(filePath))
            {
                string mpv_path = File.ReadAllText(filePath);
                if (File.Exists(mpv_path))
                    Exe = mpv_path;
            }
            ProcessStartInfo startInfo = new ProcessStartInfo
            {
                FileName = Exe,//使用程式
                Arguments = code01,//使用的參數
                UseShellExecute = false,
                CreateNoWindow = true,
            };
            using (Process process = new Process())
            {
                process.StartInfo = startInfo;
                process.Start();
            }
        }
    }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一個非常簡短 的程式碼 我先來說說 首先 我們的自定義呼叫網址 是mkvjbk:/?code="mpv指令"
我們使用Uri  解析網址 然後再用讀取其中的code參數 然後使用code參數去呼叫mpv
通常要調用mpv 要註冊 環境變數 不過我這邊新增了 可以自定義mpv 路徑 我搜尋了我們mpvjbk目錄下的 mpv_path.config 檔案 讀取裡面的mpv位置 這樣就可以不用定義mpv路徑了
基本上就是這樣的檔案...
再來教大家要完全刪除我的程式 其實只要清除 登入檔就可以了
下面是清除登入檔的bat
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo off

REM 移除註冊表
reg delete HKEY_CLASSES_ROOT\mpvjbk /f

echo 卸載完成!
pause

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最後附上下載網址
https://cdn.discordapp.com/attachments/1243073156776726580/1243073181837824030/mpvjbk.zip
這個網址沒有令牌 令牌需要把這串網址丟到discord裡面 discord會自己幫你獲得最新下載網址

留言