javascript - 使用 Chrome native 消息传递触发时批处理文件不提示用户输入

标签 javascript batch-file google-chrome-extension manifest command-prompt

我正在开发 Chrome 扩展 Extension并使用 native 消息传递来调用 Ping.exe。因为我需要在运行时选择 IP,所以我想有一个可以提示用户输入 IP 的批处理文件。它工作正常,如果我直接单击批处理文件并得到正确的响应(我也会得到用户提示)。但是当我尝试通过我创建的 UI 调用它时,使用 native 消息传递它不会提示用户并直接调用具有默认 IP 集的 exe。我在这里做错了什么?

提前致谢。

贾德普

batch File -

@echo off
set id= 192.168.1.1
set /p id= Enter IP:
set Pathname="C:\Windows\System32"
cd /d %Pathname%
start call PING.exe %id%
PAUSE

JS -

document.getElementById('but1').addEventListener(
      'click', connect);

function connect() {
	
  var hostName = "com.google.chrome.example.echo"; 
  port = chrome.runtime.connectNative(hostName);
  port.onMessage.addListener(onNativeMessage);
  port.onDisconnect.addListener(onDisconnected);
}
}

Manifest -- 

{
  "name": "com.google.chrome.example.echo",
  "description": "My Application",
  "path": "C:\\Extension\\ping.bat",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"
  ]
}

] 3

最佳答案

那是因为您的 UI 创建的流程没有有效的标准输入或重定向的标准输入。

当交互式 set 尝试扫描输入时,它会到达“文件末尾”,并保留默认的、先前设置的值。

我可以向您推荐一个更好的选择,因为它是图形化的:

1) 创建一个 .vbs 脚本(在与批处理文件相同的目录中)提示输入地址并将其打印到标准输出:

SET FS = CreateObject("Scripting.FileSystemObject")
SET StdOut = FS.GetStandardStream(1)
StdOut.Write(InputBox("IP Address"))

2) 在您的批处理脚本中执行此操作:

cscript /nologo %~pd0\ipprompt.vbs > %TEMP%\ipaddr.txt
set /p id=<%TEMP%\ipaddr.txt

将出现一个 VB 窗口,提示您输入 IP 地址,并回应它,重定向到一个文件。把它放回你的 id 环境中。变量,你就完成了,根本不需要使用标准输入。

关于javascript - 使用 Chrome native 消息传递触发时批处理文件不提示用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40830788/

相关文章:

Javascript/AJAX 仅在调试时有效

javascript - 语法产生规则与ECMAScript中的解析如何相关

javascript - 如何将 chrome tts 输出保存到客户端或服务器(仅限浏览器)

google-chrome - 如何创建 chrome 扩展来更改默认选项卡

javascript - 将 Userscript 转换为解压的 Chrome 扩展

javascript - 安全:true and safe:false in a connection with mongoskin?有什么区别以及如何使用它?

javascript - 如何通过点击另一个div中的li来显示不同div中的文本?

batch-file - 当文件已经存在时,如何在批处理文件的开头退出批处理?

batch-file - 如何在 Windows 批处理作业中访问环境变量?

batch-file - FFMPEG 强制 Concat 跳过损坏的文件