版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangxuan0261/article/details/84029331
调用系统程序 (windows的exe)
尝试了几个nodejs库 如 child_process , shelljs 等去执行命令, 均失败, 但是用纯js写的就可以执行命令. 一度失望, 让后想到可以使用终端相关api, 在终端中打开, 尝试了一下结果ok啊啊啊!!! 喜大普奔…
以用Markdown编辑器打开Markdown文件为例.
private mdTml: vscode.Terminal | undefined;
public async openMarkdown() {
let doc = vscode.window.activeTextEditor!.document;
let path = doc.uri.fsPath;
if (doc.languageId !== "markdown") {
Utils.showErrMsg(`不是 Markdown 文件, (${path})`);
return;
}
if (this.mdTml === undefined) {
this.mdTml = vscode.window.createTerminal("TyporaOpen");
}
let cmdStr = `Typora ${path}`; // Typora 所在目录必须在环境变量中, 你也可以把它抽出来作为配置
this.mdTml.show(false);
this.mdTml.sendText(cmdStr);
}
vscode.window.onDidCloseTerminal((terminal) => { // 监听终端被关闭
if (terminal.name === "TyporaOpen") {
this.mdTml = undefined;
}
});