用纯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 window.document的属性、方法和事件小结
Oct 24 Javascript
JS设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
JS实现数组删除指定元素功能示例
Jun 05 Javascript
关于layui 下拉列表的change事件详解
Sep 20 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 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正则获取页面所有图片地址
2016/03/23 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
Bootstrap Table从零开始
2017/06/30 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
python连接字符串的方法小结
2015/07/13 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
基于python的字节编译详解
2017/09/20 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
python 内置模块详解
2019/01/01 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
详解python logging日志传输
2020/07/01 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
教师产假请假条范文
2014/04/10 职场文书
留学推荐信范文
2014/05/10 职场文书
大班上学期个人总结
2015/02/13 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
会议主持词开场白
2015/05/28 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书