WinCE中的哔声,可能吗?

Posted

技术标签:

【中文标题】WinCE中的哔声,可能吗?【英文标题】:beep in WinCE , it possible ? 【发布时间】:2009-01-24 16:40:20 【问题描述】:

WinCE可以发出哔声吗?

我尝试了,我得到一个错误

【问题讨论】:

This blog entry 也可能感兴趣。 【参考方案1】:

用于beeing 的.net 框架方法在框架的CF 版本中不可用。获得哔声的最佳方法是 PInvoke 进入 MessageBeep 函数。此方法的 PInvoke 签名非常简单

[DllImport("CoreDll.dll")]
public static extern void MessageBeep(int code);

public static void MessageBeep() 
  MessageBeep(-1);  // Default beep code is -1

这篇博文有一个很好的更详尽的例子:http://blog.digitforge.com/?p=4 (on archive.org)

【讨论】:

【参考方案2】:

是的。 P/Invoke PlaySound 或 sndPlaySound 或 MessageBeep。请参阅 this 或 this 或 this。搜索引擎的 30 秒能出现的效果真是太神奇了。

【讨论】:

【参考方案3】:

如果您希望播放默认系统声音之一并使用 .net 运行时 2.0+(和 framework v 3.5+),那么您可以使用 System.Media.SystemSounds 类(不需要 PInvoke 或 WinAPI 调用),如下所示:

//available system sounds
System.Media.SystemSounds.Asterisk.Play();
System.Media.SystemSounds.Beep.Play();
System.Media.SystemSounds.Exclamation.Play();
System.Media.SystemSounds.Hand.Play();
System.Media.SystemSounds.Question.Play();

请注意,如果用户禁用或静音了系统声音,他们将听不到任何声音。

但是,如果您要播放任意音调,则需要查看上述涉及 WinAPI 或 PInvoke 的答案。

【讨论】:

如果 Compact Framework 有可用的媒体,那就可以了。它没有。 当然可以。我发布的调用是来自工作代码的示例。当然,并不是所有的硬件都支持声音,所以你可能仅限于默认的哔声或根本没有。 .NET 2.0 有媒体。 CF.NET 2.0 没有。我相信它直到 CF.NET 3.5 才被添加。如果您使用的是 CF.NET 2.0 并有权访问 System.Media,那么有人在 Microsoft 之外添加了该命名空间。 msdn.microsoft.com/en-us/library/… .NET Framework 受以下版本支持:3.5、3.0、2.0 .NET Compact Framework 受以下版本支持:3.5 啊,所以我应该澄清一下我的意思是 2.0 运行时,而不是框架。【参考方案4】:

对于 Compact Framework 中的简单哔声,您不需要所有导入的废话。此外,根据硬件,您无论如何都只能访问默认的哔声。只需使用:

Microsoft.VisualBasic.Interaction.Beep()

【讨论】:

以上是关于WinCE中的哔声,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SDL 制作哔声功能?

Win10 下使用 VS2008 开发 WinCE 应用可能遇到的问题

Win10 下使用 VS2008 开发 WinCE 应用可能遇到的问题

Win10 下使用 VS2008 开发 WinCE 应用可能遇到的问题

如何在 Linux-Assembler 中发出哔哔声?

使用 PHP 在板载扬声器上播放哔声 [关闭]