我成功地在注册表中定义了一个自定义协议(名为FDMyAlbsIF
)。该协议旨在调用批处理文件,根据接收到的参数执行不同的操作。
我现在面临两个问题:
-
通过 Windows 资源管理器调用协议时(即在路径字段中输入字符串FDMyAlbsIF:\\ AAA BBB CCC
),批处理文件确实被调用并且它的操作被看到(现在我只是将接收到的命令与输入的任何参数回显到文件中)。当从 JavaScript 调用时,我收到错误消息:Fetch API cannot load fdmyalbsif:\ "AAA" "BBB" "CCC". URL scheme "fdmyalbsif" is not supported.
-
在检查节奏文件的内容时,我发现参数没有按照我需要的方式传递,因为它显示"fdmyalbsif:\\%20AAA%20BBB%20TTT" "" "" ""
注册表中协议的定义是:
reg add HKEY_CLASSES_ROOT\FDMyAlbsIF /t REG_SZ /d "My Description" /f
reg add HKEY_CLASSES_ROOT\FDMyAlbsIF /v "URL Protocol" /t REG_SZ /d "" /f
reg add HKEY_CLASSES_ROOT\FDMyAlbsIF\shell /f
reg add HKEY_CLASSES_ROOT\FDMyAlbsIF\shell\open /f
reg add HKEY_CLASSES_ROOT\FDMyAlbsIF\shell\open\command /t REG_SZ /d d:\MiAlbs\Manipulate_Files.bat "%1" "%2" "%3" "%4" /f
我在 JavaScript 中使用的调用批处理文件的代码是:
Save_Result = async () => {
const location = window.location.hostname;
const settings = {
method: 'POST',
headers: {
Accept: 'application/text',
'Content-Type': 'application/text',
}
};
try {
const fetchResponse = await fetch(`FDMyAlbsIF:\\ "AAA" "BBB" "CCC"` , settings);
const data = await fetchResponse.text;
return data;
} catch (e) {
return e;
}
}
Save_Result () ;
我的猜测是使用post与自定义协议不一致,但我不太知道如何表达这个请求。
Edit
还有一件事可能很重要:调用批处理文件时,在某些情况下参数之一是多行字符串。我需要将此字符串按原样接收到批处理文件中。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)