【问题标题】:how can I make a Windows service beep?如何使 Windows 服务发出蜂鸣声?
【发布时间】:2009-08-18 20:33:52
【问题描述】:

我有一个服务可以充当多个应用程序/服务器的看门狗。这台机器上没有用户会话。如果出现问题,我希望看门狗能够在内部扬声器上发出哔哔声(那将是我的队列来解决它所抱怨的任何问题)

当我在 Windows 上尝试 Beep() API 时没有任何反应 - 我怀疑问题是不允许服务会话发出噪音?

我可以完成这项工作吗?关于如何使服务提醒我的任何其他想法?

-CG

【问题讨论】:

  • 您,先生,您的哔哔声和口哨声是办公环境变得如此烦人的原因之一

标签: windows service


【解决方案1】:

在 \device\beep 上调用 CreateFile,然后发送 IOCTL_BEEP_SET(详见http://www.koders.com/c/fidFEC3527B9D951559D62722A9C0C603863106CA9B.aspx

【讨论】:

  • 另外,不要在 OP 描述的非常有限的场景之外执行此操作。不能保证这在将来会起作用(事实上,它实际上已经在某些 Windows 版本上被破坏了),这种技术是绝对的最后手段。如果您有 任何 用户登录,您可以做得更好。
【解决方案2】:

如果您允许它与桌面交互,它可能会起作用(在某处可配置的选项,我不记得在哪里)。

但就我个人而言,我会让它通过电子邮件发送给我。

虽然也许你可以让它使用任务调度 API 来为自己安排一个任务,这样下次登录时你就可以看到它了。

我不知道;你有几个选择。不过我会避免发出哔哔声。

【讨论】:

    【解决方案3】:

    尝试发送 beep char "\a" 到控制台。不确定它是否会起作用。

    【讨论】:

      【解决方案4】:

      哔哔声似乎不是一个好主意——它可能最终会让每个人都发疯...... 我也同意“与桌面交互”选项,您可以在服务参数中设置此选项,请参阅A Windows Service without a template

      【讨论】:

        【解决方案5】:

        我建议创建一个简单的客户端应用程序,轮询该服务器以查询任何问题并返回一组状态消息。然后会出现一个适当的 UI(例如托盘上的气球),发送一封包含任何警告或失败消息的电子邮件等。

        通过这种方式,您还知道看门狗本身正在运行并具有网络连接 - 如果看门狗死机和/或机器锁定,您将不会知道。

        它还可以避免在您吃完午饭后机器开始连续发出哔哔声时被扔出窗外。 [+1 到@mikej] :-)

        投票周期应该是您要求的最短响应时间的一半左右(请参阅Nyquist sampling rate)。

        【讨论】:

          猜你喜欢
          • 2012-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-15
          • 1970-01-01
          • 1970-01-01
          • 2017-07-23
          • 1970-01-01
          相关资源
          最近更新 更多