用纯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 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
javascript 表单规则集合对象
Jul 21 Javascript
JQUBar 基于JQUERY的柱状图插件
Nov 23 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 Javascript
纯js实现瀑布流布局及ajax动态新增数据
Apr 07 Javascript
使用Node.js实现一个多人游戏服务器引擎
Mar 13 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
用Vue.js方法创建模板并使用多个模板合成
Jun 28 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
vue实现全屏滚动效果(非fullpage.js)
Mar 07 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
prettier自动格式化去换行的实现代码
Aug 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获取某个目录大小的代码
2008/09/10 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
Python 实现简单的电话本功能
2015/08/09 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
python中的字典操作及字典函数
2018/01/03 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
实习生体会的自我评价范文
2013/11/28 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
客户接待方案
2014/02/26 职场文书
购房意向书范本
2014/04/01 职场文书
环保志愿者活动方案
2014/08/14 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
工程催款通知书
2015/04/17 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫