在 WPF Frame 控件中关闭导航页面声音
Posted
技术标签:
【中文标题】在 WPF Frame 控件中关闭导航页面声音【英文标题】:Turn off navigation page sound in WPF Frame control 【发布时间】:2011-05-14 07:59:00 【问题描述】:我在 WPF 窗口中有一个 Frame 元素,我的应用程序中的所有内容都是使用 Frame.Navigate() 加载的。但是,当导航到新页面时,默认情况下会播放该声音,与 Internet Explorer 中播放的声音相同。有什么办法可以从应用程序中关闭这种声音?我不想在操作系统级别的控制面板中关闭设置。 谢谢。
编辑:我想唯一的方法是改变操作系统级别的声音,这可以在注册表中完成。这对我来说是可以接受的解决方案。
http://social.msdn.microsoft.com/forums/en-us/vbgeneral/thread/843677F4-8F0B-46CB-986C-92E8042D0707
【问题讨论】:
【参考方案1】:好像没有其他办法,只能像here描述的那样在Windows设置中关闭
【讨论】:
social.msdn.microsoft.com/forums/en-us/vbgeneral/thread/…【参考方案2】:Dennis 在这里指出了一个解决方案 How to disable click sound in WebBrowser Control 但在我的情况下没有用。所以我修改了如下代码,现在一切正常:
用法
URLSecurityZoneAPI.InternetSetFeatureEnabled(URLSecurityZoneAPI.InternetFeaturelist.DISABLE_NAVIGATION_SOUNDS, URLSecurityZoneAPI.SetFeatureOn.PROCESS, false);
URLSecurityZoneAPI.vb
''' Enables or disables a specified Internet Explorer feature control
''' Minimum availability: Internet Explorer 6.0
''' Minimum operating systems: Windows XP SP2
Imports System.Runtime.InteropServices
Imports System.Security
Imports System
Friend Class URLSecurityZoneAPI
''' <summary>
''' Specifies where to set the feature control value
''' http://msdn.microsoft.com/en-us/library/ms537168%28VS.85%29.aspx
''' </summary>
Public Enum SetFeatureOn As Integer
THREAD = &H1
PROCESS = &H2
REGISTRY = &H4
THREAD_LOCALMACHINE = &H8
THREAD_INTRANET = &H10
THREAD_TRUSTED = &H20
THREAD_INTERNET = &H40
THREAD_RESTRICTED = &H80
End Enum
''' <summary>
''' InternetFeaturelist
''' http://msdn.microsoft.com/en-us/library/ms537169%28v=VS.85%29.aspx
''' </summary>
Public Enum InternetFeaturelist As Integer
OBJECT_CACHING = 0
ZONE_ELEVATION = 1
MIME_HANDLING = 2
MIME_SNIFFING = 3
WINDOW_RESTRICTIONS = 4
WEBOC_POPUPMANAGEMENT = 5
BEHAVIORS = 6
DISABLE_MK_PROTOCOL = 7
LOCALMACHINE_LOCKDOWN = 8
SECURITYBAND = 9
RESTRICT_ACTIVEXINSTALL = 10
VALIDATE_NAVIGATE_URL = 11
RESTRICT_FILEDOWNLOAD = 12
ADDON_MANAGEMENT = 13
PROTOCOL_LOCKDOWN = 14
HTTP_USERNAME_PASSWORD_DISABLE = 15
SAFE_BINDTOOBJECT = 16
UNC_SAVEDFILECHECK = 17
GET_URL_DOM_FILEPATH_UNENCODED = 18
TABBED_BROWSING = 19
SSLUX = 20
DISABLE_NAVIGATION_SOUNDS = 21
DISABLE_LEGACY_COMPRESSION = 22
FORCE_ADDR_AND_STATUS = 23
XMLHTTP = 24
DISABLE_TELNET_PROTOCOL = 25
FEEDS = 26
BLOCK_INPUT_PROMPTS = 27
MAX = 28
End Enum
''' <summary>
''' Set the internet feature enabled/disabled
''' </summary>
''' <param name="feature">The feature from <c>InternetFeaturelist</c></param>
''' <param name="target">The target from <c>SetFeatureOn</c></param>
''' <param name="enabled">enabled the feature?</param>
''' <returns><c>true</c> if [is internet set feature enabled] [the specified feature]; otherwise, <c>false</c>.</returns>
Public Shared Function InternetSetFeatureEnabled(feature As InternetFeaturelist, target As SetFeatureOn, enabled As Boolean) As Boolean
Return (SafeNativeMethods.CoInternetSetFeatureEnabled(CInt(feature), CInt(target), enabled) = 0)
End Function
''' <summary>
''' Determines whether the internet feature is enabled.
''' </summary>
''' <param name="feature">The feature from <c>InternetFeaturelist</c></param>
''' <param name="target">The target from <c>SetFeatureOn</c></param>
''' <returns><c>true</c> if the internet feature is enabled; otherwise, <c>false</c>.
''' </returns>
Public Shared Function IsInternetSetFeatureEnabled(feature As InternetFeaturelist, target As SetFeatureOn) As Boolean
Return (SafeNativeMethods.CoInternetIsFeatureEnabled(CInt(feature), CInt(target)) = 0)
End Function
End Class
<SuppressUnmanagedCodeSecurityAttribute()>
Friend NotInheritable Class SafeNativeMethods
Private Sub New()
End Sub
''' <summary>
''' Enables or disables a specified feature control.
''' http://msdn.microsoft.com/en-us/library/ms537168%28VS.85%29.aspx
''' </summary>
<SecurityCritical, SuppressUnmanagedCodeSecurity, DllImport("urlmon.dll", ExactSpelling:=True)>
Friend Shared Function CoInternetSetFeatureEnabled(featureEntry As Integer, <MarshalAs(UnmanagedType.U4)> dwFlags As Integer, fEnable As Boolean) As <MarshalAs(UnmanagedType.[Error])> Integer
End Function
''' <summary>
''' Determines whether the specified feature control is enabled.
''' http://msdn.microsoft.com/en-us/library/ms537164%28v=VS.85%29.aspx
''' </summary>
<SecurityCritical, SuppressUnmanagedCodeSecurity, DllImport("urlmon.dll", ExactSpelling:=True)>
Friend Shared Function CoInternetIsFeatureEnabled(featureEntry As Integer, dwFlags As Integer) As <MarshalAs(UnmanagedType.[Error])> Integer
End Function
End Class
注意添加名为SafeNativeMethods
的类
【讨论】:
以上是关于在 WPF Frame 控件中关闭导航页面声音的主要内容,如果未能解决你的问题,请参考以下文章
如何在导航控件片段中关闭导航 DrawerLayout onBackPressed
如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?