用纯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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
javascript中的对象创建 实例附注释
Feb 08 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
jQuery中before()方法用法实例
Dec 25 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
Angular中使用$watch监听object属性值的变化(详解)
Apr 24 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
Oct 29 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
JavaScript实现移动端拖动元素
Nov 24 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
js获取页面description的方法
2015/05/21 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
JavaScript中Object基础内部方法图
2018/02/05 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
python装饰器与递归算法详解
2016/02/18 Python
python自定义异常实例详解
2017/07/11 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python实现倒计时小工具
2019/07/29 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
党员创先争优承诺书
2014/03/26 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
同学聚会开幕词
2019/04/02 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫