用纯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技术很烂的五个原因分析
Oct 28 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 Javascript
jquery中radio checked问题
Mar 16 Javascript
JQuery控制Radio选中方法分析
May 29 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
Mar 14 Javascript
如何快速上手Vuex
Feb 14 Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 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 sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
对比分析json及XML
2014/11/28 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python list多级排序知识点总结
2019/10/23 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
学习Python列表的基础知识汇总
2020/03/10 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
科研课题实施方案
2014/03/18 职场文书
小学二年级评语
2014/04/21 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android