【问题标题】:Timeout Msgbox popup超时消息框弹出窗口
【发布时间】:2014-04-29 13:03:24
【问题描述】:

我有一个运行的小脚本(基本上会触发一个 msgbox 来告诉人们他们的帐户密码即将过期)。

我希望它在 30 分钟后自行关闭,但无法获得正确的语法来执行此操作,有人可以帮忙吗?

下面是调用msgbox的部分

if (daysLeft < warningDays) and (daysLeft > -1) then

Msgbox "Your Password Expires in " & daysLeft & " day(s)" & " at " & whenPasswordExpires & chr(13) & chr(13) & "Please ensure that you change your password before" & chr(13) & "its expiry time to prevent any disruption of service.", 4144, "PASSWORD EXPIRATION WARNING!"

End if

--

加文。

【问题讨论】:

标签: vbscript autohotkey msgbox


【解决方案1】:

WShell 对象的Popup() 方法可以在指定的秒数后超时。这是一个应该在 30 分钟后消失的示例。

CreateObject("WScript.Shell").Popup "Hello!", 1800, "Title"

【讨论】:

  • 效果很好,记住设置为1800的时间是以秒为单位的。
  • 有没有办法让这个弹出 SystemModal 或保持在其他窗口的顶部?
  • ,4096 添加到命令的末尾以作为系统模式消息框打开,并出现在最顶部的窗口中。
  • 请注意,超时在 vbscript 中有效,但在 Office VBA 中无效。如果你想在 Office VBA 中使用它,试试这个使用 mshta.exe 的方法:stackoverflow.com/a/44837192/1898524
  • 我不是唯一一个在 Office VBA 中遇到问题的人。讨论和使用 mshta.exe 的替代方法显示为here。请注意,mshta 方法不支持回车,并且始终在主监视器上显示消息。 This link 显示了一个 API MsgBox,它支持超时、回车和返回值。 @Bond,您在这里的回答对我来说是一种启发。我已经使用 VBA 20 年了,直到本周才知道可能会出现超时。
【解决方案2】:

你不能那样做,你需要使用你自己的自定义表单和计时器,因为消息框只能在用户交互时关闭。

【讨论】:

  • 这篇文章暗示了它的可能:autohotkey.free.fr/docs/commands/MsgBox.htm
  • Gavin 如果您愿意查看该文章的底部,提到 IfMsgBox 和示例语法清楚地表明该文档不适用于 VBA、VB6、VB.NET 或 C# 的方言跨度>
【解决方案3】:

与@user3585329 的观点相呼应,为此您可能需要创建一个 HTA 应用程序,该应用程序可以在 Internet Explorer 表单中显示信息。

【讨论】:

【解决方案4】:

像这样修复:

CreateObject("WScript.Shell").Popup "MessageHere", 10, "Title"

TimeOut 以秒为单位,而不是毫秒!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多