我需要知道用户对 MsgBox 做了啥。非常基本的 VBScript
Posted
技术标签:
【中文标题】我需要知道用户对 MsgBox 做了啥。非常基本的 VBScript【英文标题】:I need to know what a user does with MsgBox. Very basic VBScript我需要知道用户对 MsgBox 做了什么。非常基本的 VBScript 【发布时间】:2014-10-14 19:01:56 【问题描述】:我曾经有一个脚本(msgbox.vbs)是这样的:
Set objArgs = WScript.Arguments
messageTitle = objArgs(0)
messageText = objArgs(1)
MsgBox messageText, 1, messageTitle
我是编码新手,以前从未在 VBScript 中编码,但我需要更改此脚本,以便我可以从调用此脚本的 javascript 脚本中读取用户是否在对话框中单击“确定”或“取消”弹出 MsgBox 对话框时出现的框。 所以我尝试了这个:
Set objArgs = WScript.Arguments
messageTitle = objArgs(0)
messageText = objArgs(1)
retValue = MsgBox (messageText, 1, messageTitle)
if retValue == 1 Then
WScript.Quit 11
ElseIf retValue == 2 Then
WScript.Quit 22
Else
End If
我想我会尝试从我学到的 here 中获取 MsgBox 的返回值,然后编写一个 if then else 语句让它退出并返回一个错误代码,我可以从 JS 中的回调函数中读取该错误代码读取退出代码。
从第一个脚本开始,我得到一个错误代码 0,而且对话框非常漂亮。现在,使用我的新代码,我得到一个错误代码 1 并且对话框不再出现:(
我想念这个对话框,我需要它。我还需要知道用户点击了哪个按钮,这样我才能继续我的程序的其余部分。
提前感谢您的帮助,我真的很感激!
如果您好奇的话,这里是调用 .vbs 的 Javascript(只是找到的 NPM 的编辑版本here):
/*
By Tomas Pollak <tomas@forkhq.com>.
MIT License.
*/
var join = require('path').join,
spawn = require('child_process').spawn;
var Dialog = module.exports =
info: function(str, title, callback)
this.show('info', str, title, callback);
,
warn: function(str, title, callback)
this.show('warning', str, title, callback);
,
show: function(type, str, title, callback)
if (!str || str.trim() == '')
throw('Empty or no string passed!');
if (typeof title == 'function')
callback = title;
title = null;
var cmd = [],
title = title ? title : 'Important';
var str = (str+'').replace(/([.?*+^$[\]\\()<>|`-])/g, "\$1");
cmd.push('cscript');
cmd.push(join(__dirname, 'msgbox.vbs'));
cmd.push(title) && cmd.push(str);
this.run(cmd, callback);
,
run: function(cmd, cb)
var bin = cmd[0],
args = cmd.splice(1),
stdout = '', stderr = '';
var child = spawn(bin, args);
child.stdout.on('data', function(data)
stdout += data.toString();
)
child.stderr.on('data', function(data)
stderr += data.toString();
)
child.on('exit', function(code)
cb && cb(code, stdout, stderr);
)
【问题讨论】:
【参考方案1】:VBScript中的eq运算符是=,不是==,所以改
if retValue == 1 Then
到
if retValue = 1 Then
(无处不在!)。
更新评论:
您应该使用MsgBox Constants;路过
vbOKCancel - 1 - 显示确定和取消按钮
而不是像 1 这样的幻数会避免误导其他人。
【讨论】:
以上是关于我需要知道用户对 MsgBox 做了啥。非常基本的 VBScript的主要内容,如果未能解决你的问题,请参考以下文章