windows - Chrome 扩展 - 消息传递到批处理文件

标签 windows batch-file google-chrome-extension message-passing chrome-native-messaging

我使用了示例项目 https://developer.chrome.com/extensions/samples 我能够运行 python native 应用程序。

有没有办法在 native-messaging-example-host.bat 中获取消息

我不想加载python脚本

我想在这里做的是 从 chrome 发送消息 {text: "xyz.bat"}

批处理文件应该运行 START xyz.bat

最佳答案

不应该从批处理文件的角度来解决这个问题,因为代替我的解决方案,它需要预先运行程序,在大多数应用程序中,这有利于运行它的背景。 但是,如果您仍然想知道如何批量完成...

如果您可以将消息传递到一个空白的 html 页面(目前不确定您可以或想要这样做),那么该 html 页面上唯一的东西就是您的 runme.bat我们可以运行一个程序来复制页面,打开一个文本文件并将其粘贴到里面,关闭文本文件,然后使用其中的输入运行批处理。所以代码明智,

@if (@CodeSection == @Batch) @then
@echo off
set SendKeys=CScript //nologo //E:JScript "%~F0"

rem below copys everything on the page, and closes it
%SendKeys% "{TAB}" 
%SendKeys% "^{A}"
%SendKeys% "^{C}"
%SendKeys% "^{W}"

rem open text file,wait for it load, paste clipboard, save and exit

start newreadforme.txt
timeout /nobreak /t 5 
%SendKeys% "^{V}"
%SendKeys% "^{S}"
timeout /nobreak /t 2
%SendKeys% "^{W}"
start program.bat 
goto :EOF
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

然后在你的批处理文件中

@echo off
set /p x=<newreadforme.txt
start %x%

此代码将在打开的页面上运行模拟击键以复制其内容并中继到文本文件以从另一个批处理文件中引用。 但是你应该只在万不得已的情况下使用这种方法,因为这种方法是解决你的问题的一种糟糕的方法。我的代码要求你保持网页打开和提前,并确保没有人干扰程序在其执行期间。因此,如果用户在计算机运行时使用计算机,那么他们可能会不小心弄乱输入。

除此之外,您已经需要修改网页以实现最终结果,因此您可能应该使用支持 html 到文件系统操作的语言Nodejs can provide a nice interface between the file system以及您可能决定通过的 html 页面。您如何处理充满消息的网页,我不确定但您绝对应该避免使用批处理来执行您要求的操作,以支持对 html 更友好的语言

关于windows - Chrome 扩展 - 消息传递到批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587091/

相关文章:

java - 通过命令提示符运行(可能是路径错误?)

windows - 适用于Windows的gstreamer的Ladspa插件

batch-file - 递归 .bat 文件将 jpegtran 和 pngout 应用于子文件夹中的所有图像

batch-file - 以管理员身份在批处理文件中运行 powershell 脚本

javascript - 不断检查元素的长度,如果为 1 则执行操作

javascript - 如何处理从 "chrome.tabCapture"获得的媒体流?

java - 如何使用非 ASCII 文件名创建 Windows 原生兼容 Zip 文件

php - 如何降级或安装特定版本的 Composer?

windows - 用于检查字符串是否包含其他字符串的 bat 文件脚本

google-chrome - 为什么我收到无法调用未定义的方法 'addListener'?