用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)


Posted in Javascript onMay 17, 2017

Node.JS是一个控制台程序,如果想要从Node.JS弹出Windows系统提示框的话,有很多方法可以实现。比如借助 electron 或 node-webkit:

在Electron中弹出消息框

Electron与Windows的接口非常完善,可以调用各种Window原生机制,如创建系统托盘图标。打开文件夹选择框等。这里使用dialog,即可弹出系统消息提示框:

const {
  app
 , BrowserWindow
 , Menu
 , Tray
 , shell
 , dialog
 , ipcMain
} = require('electron')

var parseCommand = function() {
 dialog.showMessageBox({
   title  : '错误'
  , type  : 'error'
  , message : '此文件没有跟 OnceDoc 绑定'
 })
}

var initApp = function() {
 parseCommand()
}

app.on('ready', initApp)

使用electron运行上面的代码:

electron app.js

调用VB脚本弹出消息框

Electron的确实比较方便,但是体积比较大,消息弹出比较慢。我们可以通过child_process调用VB脚本弹出消息框。

比如,我们新建一个 VB 脚本文件,命名为: vb.message.vbs,内容如下:

msgbox WScript.Arguments(1), vbInformation, WScript.Arguments(0)

此脚本会将第一个和第二个参数作为提示框的标题和内容弹出,在Node.JS调用即可:

var cp  = require('child_process')

var initApp = function() {
 var vbsPath = path.join(__dirname, 'vb.message.vbs')

 cp.exec('cscript.exe ' + vbsPath + ' "提示" "此文件没有跟 OnceDoc 绑定"', function(err, stdout, stderr) {
  if (err) {
   fs.writeFileSync('log.log', err.toString())
  }
 })
}

initApp()

使用ActiveXObject弹出消息框

VB脚本需要创建额外的文件,使用ActiveXObject则直接在Node.JS中编写脚本,比如:

var cp  = require('child_process')
var initApp = function() {
 cp.exec('mshta "javascript:var sh=new ActiveXObject("WScript.Shell"); sh.Popup("Message!", 10, "Title!", 64 );close()"')
}

initApp()

除了弹出提示框外,借助vb和activex脚本均可实现一些高级功能,如连接本数据库等。此外借助msg.exe系统进程间通信也可

以实现消息提示框,不过某些系统可能没有安装msg.exe,并且此种方法不能自定义消息标题。

cp.exec('msg %username% "这是什么意思? 我不知道"')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript学习笔记4 Eval函数
Jan 11 Javascript
javascript 数组学习资料收集
Apr 11 Javascript
jQuery选择头像并实时显示的代码
Jun 27 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
AngularJS实现的回到顶部指令功能实例
May 17 #Javascript
bootstrap模态框示例代码分享
May 17 #Javascript
ES6入门教程之let和const命令详解
May 17 #Javascript
详解如何在Angular中快速定位DOM元素
May 17 #Javascript
vue2.0中goods选购栏滚动算法的实现代码
May 17 #Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 #Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 #jQuery
You might like
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
python将回车作为输入内容的实例
2018/06/23 Python
python之文件读取一行一行的方法
2018/07/12 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
五一劳动节活动记录
2014/03/23 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
小学课外活动总结
2014/07/09 职场文书
无私奉献演讲稿
2014/09/04 职场文书
股指期货心得体会
2014/09/10 职场文书
批评与自我批评范文
2014/10/15 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
Python制作春联的示例代码
2022/01/22 Python