用纯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一句话全选/取消全选
Mar 01 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
JavaScript中判断原生函数检查function是否是原生代码
Sep 09 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
jquery实现选项卡切换代码实例
May 14 jQuery
el-input 标签中密码的显示和隐藏功能的实例代码
Jul 19 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
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
虫族 Zerg 热键控制
2020/03/14 星际争霸
编译问题
2006/10/09 PHP
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
PHP strripos函数用法总结
2019/02/11 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python字符串三种格式化输出
2020/09/17 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
大学生个人简历自我评价
2013/11/16 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
相亲活动方案
2014/08/26 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python