用纯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 强制刷新页面的实现代码
Dec 13 Javascript
可以用来调试JavaScript错误的解决方案
Aug 07 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
Dec 13 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
javascript实现瀑布流加载图片原理
Feb 02 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
vue中封装axios并实现api接口的统一管理
Dec 25 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系统流量分析的程序
2006/10/09 PHP
php文件缓存方法总结
2016/03/16 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
用python删除java文件头上版权信息的方法
2014/07/31 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
浅谈对yield的初步理解
2017/05/29 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
旅游安全协议书
2014/04/21 职场文书
男女朋友协议书
2014/04/23 职场文书
服务承诺口号
2014/05/22 职场文书
文明寝室标语
2014/06/13 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
意向书范本
2014/07/29 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
实施意见格式范本
2015/06/05 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
移除Selenium中window.navigator.webdriver值
2022/06/10 Python
Win2008系统搭建DHCP服务器
2022/06/25 Servers