javascript - Wscript.exe 任务堆栈并强调 CPU
问题描述
解决了:
我意识到,如果你让它休眠,进程'wscript.exe'对于保持程序运行并不是必需的,所以我只是在 ActiveXObject 启动后用脚本中的批处理文件杀死它。
我已经安装了 Realterm,它对我来说充当 RS485 客户端。像魅力一样工作,但不允许将设置保存为预设。所以每次你启动它时,你都必须一次又一次地输入你的设置,这对我来说很痛苦。
他们有一种“简单”的方法来处理这个问题,让你编写一个脚本,实例化 ActiveXObject(是的,很老的哈......)并预定义一些设置,如 COM 端口、波特率等。
这是他们提供的脚本应该是什么样子的演示:
var RT = new ActiveXObject("realterm.realtermintf");
RT.caption="Windows Scripting Host Demo";
RT.HalfDuplex=1;
RT.baud=57600;
RT.FlowControl=2; //2=RTS/CTS
RT.Port=1;
RT.PortOpen=1;
RT.LinefeedIsNewline=1;
RT.SelectTabSheet("I2C");
RT.PutString("G1");
RT.NewlineTerminal();
WScript.Sleep(500);
RT.PutString("SB20DP SB302P");
RT.NewlineTerminal();
WScript.Sleep(500);
RT.PutString("SB20DP SB302P");
//RT.PutChar(10); //LF
RT.NewlineTerminal();
WScript.Echo("Realterm will close when you click OK");
RT.Close();
通过让您单击弹出窗口上的“确定”
WScript.Echo("点击确定后 Realterm 将关闭");
实例化,调用“ .Close() ”方法并正确关闭窗口。
- 问题/不便之处在于,如果您使用演示,总会有一个弹出窗口打开。我想方便地通过单击窗口窗体上的红色 X 来关闭窗口和任务。
这是我当前的代码和解决不便的方法。
var RT = new ActiveXObject("realterm.realtermintf");
RT.caption="Realterm Mod";
RT.HalfDuplex=1;
RT.baud=9600;
RT.FlowControl=0; //2=RTS/CTS
RT.Port=16;
RT.PortOpen=0;
RT.LinefeedIsNewline=1;
RT.SelectTabSheet("Send");
RT.NewlineTerminal();
while (true){
var date = new Date();
var hours = date.getHours();
var minutes = date.getMinutes();
if(hours >= 16 && minutes >= 0){ //closes if certain time is met
WScript.Echo("Feierabend!")
RT.Close();
}
else{ // keeps the program from closing
continue;
}
}
现在的问题:如果您要通过放置一段时间(真)来强制它打开 - 循环并且不使用弹出方式来处理它,当您通过单击表单上的红色 X 关闭窗口时,窗口会关闭,但' wscript.exe ' 任务保持打开状态并使您的 CPU 保持忙碌。如果您要关闭并重新打开程序,该任务也会堆叠。
我的问题是:
- 有什么办法可以在窗口关闭之前捕捉到它,或者检查它是否已关闭,然后在对象本身上执行“ .Close() ”或调用一个批处理文件来终止任务?
我对 WScript 没有太多经验,因此我不知道你是否可以处理这样的事件。对我来说,这通常更像是一个练习/噱头,而不是一个真正的问题,因为我正在学习编码并且想要了解更多并且对事物有更多的了解,所以我很感激这个问题的实际答案。
提前感谢大家!
解决方案
推荐阅读
- json - 将 XML 属性转换为 json
- kotlin - 如何在 Kotlin DSL 的子项目中重用依赖版本?
- python - 用虚拟 df 反向爆炸
- google-cloud-platform - Terraform Google 提供商,创建基于日志的警报策略
- python - 从父目录旁边的文件导入
- php - 使用ajax jQuery for-each函数在表中追加多个数据
- flutter - 如何在 catch 代码中访问 dio onResponse.statuscode
- java - 使用 factory.createParser 创建解析器时出错
- flutter - 如何在 Flutter Flame 中创建滚动视图
- text - 在 SwiftUI 中使用 Text 时,如何解决“调用初始化程序时没有完全匹配”错误?