用纯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图表动画插件Highcharts Examples
Apr 16 Javascript
js单例模式详解实例
Nov 21 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
Apr 25 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
原生javascript实现的一个简单动画效果
Mar 30 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
微信小程序实现导航栏选项卡效果
Jun 19 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
es6中let和const的使用方法详解
Feb 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
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
php类中private属性继承问题分析
2012/11/01 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python中import学习备忘笔记
2017/01/24 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
大学生个人自荐信
2014/02/24 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
服装发布会策划方案
2014/05/22 职场文书
唐山大地震的观后感
2015/06/05 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
python迷宫问题深度优先遍历实例
2021/06/20 Python