用纯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 相关文章推荐
Prototype源码浅析 String部分(二)
Jan 16 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
深入理解javascript中defer的作用
Dec 11 Javascript
简单js代码实现selece二级联动(推荐)
Feb 18 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
vue中使用refs定位dom出现undefined的解决方法
Dec 21 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
Oct 27 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
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中去除所有js,html,css代码
2010/10/12 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
神经网络理论基础及Python实现详解
2017/12/15 Python
Python 12306抢火车票脚本
2018/02/07 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
大一军训感言
2014/01/09 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
课题研究阶段性总结
2015/08/13 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL