.net - silencioso - sonidos para el click del mouse windows 10
Cómo deshabilitar el sonido de clic en el control WebBrowser (7)
Como lo señalan los comentarios y la respuesta de , de hecho es posible.
Si navegas en IE y, por lo tanto, ese control, obtendrás el clic. A menos que cambie la configuración, o la simule como ese enlace, entonces no, no puede deshacerse del clic.
Uso Javascript para hacer clic en un enlace en el control del navegador web. Pero no quiero escuchar el sonido "clic" de IE.
¿Hay alguna manera de hacer esto?
PD
- No quiero cambiar la configuración del sistema.
- He visto este (Cómo deshabilitar WebBrowser ''Click Sound'' en su aplicación solamente ) pero
Document.Write
no es una opción para mí.
Entonces esto es una limitación conocida entonces ...
¿Hay algún truco sucio / solución alternativa como enganchar llamadas de sonido de ActiveX y deshabilitarlas (no estoy seguro de si es posible sin ir demasiado profundo)
He envuelto esta funcionalidad en una clase lista para usar. Utilicé parte de la información de la respuesta seleccionada y la referencia de MSDN .
Espero que sea útil para alguien.
Uso
URLSecurityZoneAPI.InternetSetFeatureEnabled(URLSecurityZoneAPI.InternetFeaturelist.DISABLE_NAVIGATION_SOUNDS, URLSecurityZoneAPI.SetFeatureOn.PROCESS, false);
URLSecurityZoneAPI
/// <summary>
/// Enables or disables a specified Internet Explorer feature control
/// Minimum availability: Internet Explorer 6.0
/// Minimum operating systems: Windows XP SP2
/// </summary>
internal 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 : int
{
THREAD = 0x00000001,
PROCESS = 0x00000002,
REGISTRY = 0x00000004,
THREAD_LOCALMACHINE = 0x00000008,
THREAD_INTRANET = 0x00000010,
THREAD_TRUSTED = 0x00000020,
THREAD_INTERNET = 0x00000040,
THREAD_RESTRICTED = 0x00000080
}
/// <summary>
/// InternetFeaturelist
/// http://msdn.microsoft.com/en-us/library/ms537169%28v=VS.85%29.aspx
/// </summary>
public enum InternetFeaturelist : int
{
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
}
/// <summary>
/// Enables or disables a specified feature control.
/// http://msdn.microsoft.com/en-us/library/ms537168%28VS.85%29.aspx
/// </summary>
[DllImport("urlmon.dll", ExactSpelling = true), PreserveSig, SecurityCritical, SuppressUnmanagedCodeSecurity]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(int featureEntry, [MarshalAs(UnmanagedType.U4)] int dwFlags, bool fEnable);
/// <summary>
/// Determines whether the specified feature control is enabled.
/// http://msdn.microsoft.com/en-us/library/ms537164%28v=VS.85%29.aspx
/// </summary>
[DllImport("urlmon.dll", ExactSpelling = true), PreserveSig, SecurityCritical, SuppressUnmanagedCodeSecurity]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetIsFeatureEnabled(int featureEntry, int dwFlags);
/// <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 static bool InternetSetFeatureEnabled(InternetFeaturelist feature, SetFeatureOn target, bool enabled)
{
return (CoInternetSetFeatureEnabled((int)feature, (int)target, enabled) == 0);
}
/// <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 static bool IsInternetSetFeatureEnabled(InternetFeaturelist feature, SetFeatureOn target)
{
return (CoInternetIsFeatureEnabled((int)feature, (int)target) == 0);
}
}
Imports System.Runtime.InteropServices <Imports System.Security
qxxx usa esas importaciones
No puedo hacerlo funcionar en VB.net, intenté esto:
Private Const FEATURE_DISABLE_NAVIGATION_SOUNDS As Integer = 21
Private Const SET_FEATURE_ON_THREAD As Integer = &H1
Private Const SET_FEATURE_ON_PROCESS As Integer = &H2
Private Const SET_FEATURE_IN_REGISTRY As Integer = &H4
Private Const SET_FEATURE_ON_THREAD_LOCALMACHINE As Integer = &H8
Private Const SET_FEATURE_ON_THREAD_INTRANET As Integer = &H10
Private Const SET_FEATURE_ON_THREAD_TRUSTED As Integer = &H20
Private Const SET_FEATURE_ON_THREAD_INTERNET As Integer = &H40
Private Const SET_FEATURE_ON_THREAD_RESTRICTED As Integer = &H80
Declare Function CoInternetSetFeatureEnabled Lib "urlmon.dll" ( _
ByVal FeatureEntry As Integer, ByVal dwFlags As Long, _
ByVal fEnable As Long) As Long
...
CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, SET_FEATURE_ON_PROCESS, True)
Editar: Encontré el problema, está dentro de declarar. La verdadera es:
<SecurityCritical, SuppressUnmanagedCodeSecurity, DllImport("urlmon.dll", ExactSpelling:=True)> _
Public Shared Function CoInternetSetFeatureEnabled(ByVal featureEntry As Integer, ByVal dwFlags As Integer, ByVal fEnable As Boolean) As Integer
End Function
Gracias a dmex en http://msdn.microsoft.com/en-us/library/ms537168%28VS.85%29.aspx
Para IE7 y superior, puede usar esto:
int feature = FEATURE_DISABLE_NAVIGATION_SOUNDS;
CoInternetSetFeatureEnabled(feature, SET_FEATURE_ON_PROCESS, true);
utilizando las siguientes importaciones de DLL
private const int FEATURE_DISABLE_NAVIGATION_SOUNDS = 21;
private const int SET_FEATURE_ON_THREAD = 0x00000001;
private const int SET_FEATURE_ON_PROCESS = 0x00000002;
private const int SET_FEATURE_IN_REGISTRY = 0x00000004;
private const int SET_FEATURE_ON_THREAD_LOCALMACHINE = 0x00000008;
private const int SET_FEATURE_ON_THREAD_INTRANET = 0x00000010;
private const int SET_FEATURE_ON_THREAD_TRUSTED = 0x00000020;
private const int SET_FEATURE_ON_THREAD_INTERNET = 0x00000040;
private const int SET_FEATURE_ON_THREAD_RESTRICTED = 0x00000080;
...
[DllImport("urlmon.dll")]
[PreserveSig]
[return:MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(
int FeatureEntry,
[MarshalAs(UnmanagedType.U4)] int dwFlags,
bool fEnable);
(se encuentra en el sitio de comentarios de MS como una solución del equipo de WPF: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345528&wa=wsignin1.0 )
Tu única otra opción es silenciar la computadora, pero eso no es una buena idea ...