用纯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判断chrome浏览器的方法
Mar 26 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
JavaScript中实现单体模式分享
Jan 29 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
js实现漫天星星效果
Jan 19 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
Aug 31 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
vue实现简单跑马灯效果
May 25 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实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
js字符串转成JSON
2013/11/07 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python单元测试简单示例
2018/07/03 Python
python实现最大优先队列
2019/08/29 Python
Python pip配置国内源的方法
2020/02/14 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
应届毕业生的自我鉴定
2013/11/13 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
报关报检委托书
2014/04/08 职场文书
铁路安全事故反思
2014/04/26 职场文书
事业单位考核材料
2014/05/21 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
导游词之清晏园
2019/11/22 职场文书
Golang ort 中的sortInts 方法
2022/04/24 Golang