用纯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 相关文章推荐
JQuery中的ready函数冲突的解决方法
May 17 Javascript
jquery(hide方法)隐藏指定元素实例
Nov 11 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
Vue.js实现无限加载与分页功能开发
Nov 03 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
jQuery File Upload文件上传插件使用详解
Dec 06 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
node.js学习之断言assert的使用示例
Sep 28 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 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连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
python如何构建mock接口服务
2021/01/28 Python
阿拉伯书店:Jamalon
2019/07/24 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Python安装使用Scrapy框架
2022/04/12 Python