用纯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 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
Javascript函数的参数
Jul 16 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
Nov 25 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
Vue项目环境搭建详细总结
Sep 26 Javascript
使用pkg打包ThinkJS项目的方法步骤
Dec 30 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
Jul 22 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 生成饼图 三维饼图
2009/09/28 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
python word转pdf代码实例
2019/08/16 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
党员自我评价分享
2013/12/13 职场文书
文化建设工作方案
2014/05/12 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
教师先进事迹材料
2014/12/16 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
办公室管理规章制度
2015/08/04 职场文书
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android