用纯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 设置文本框中焦点的位置
Nov 20 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
JS模仿手机端九宫格登录功能实现代码
Apr 28 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 Javascript
详解Puppeteer 入门教程
May 09 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
vue实现标签云效果的方法详解
Aug 28 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
js仿京东放大镜效果
Aug 09 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设计模式 Bridge (桥接模式)
2011/06/26 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
js取得url地址参数实例
2013/02/22 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python3基础之输入和输出实例分析
2014/08/18 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
最新大学生自我评价
2013/09/24 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
小学生操行评语大全
2014/04/22 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
付款承诺函范文
2015/01/21 职场文书
建议书范文
2015/02/05 职场文书
2015年超市员工工作总结
2015/05/04 职场文书