用纯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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
JavaScript delete 属性的使用
Oct 08 Javascript
将string解析为json的几种方式小结
Nov 11 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
Feb 27 Javascript
jquery移动点击的项目到列表最顶端的方法
Jun 24 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
vue与原生app的对接交互的方法(混合开发)
Nov 28 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 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
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python利用datetime模块计算时间差
2015/08/04 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python中正则表达式详解
2017/05/17 Python
django中send_mail功能实现详解
2018/02/06 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python自动生成model文件过程详解
2019/11/02 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
活动邀请函范文
2014/01/19 职场文书
工程项目建议书范文
2014/03/12 职场文书
个人银行贷款担保书
2014/04/01 职场文书
销售顾问工作计划书
2014/09/15 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
flex弹性布局详解
2022/03/20 HTML / CSS
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js