Puedo usar Javascript para hacer clic en un vínculo en el control webbrowser. Pero yo no quiero oír es decir del sonido de «clic».

Hay alguna forma de hacer esto?

P. S.

InformationsquelleAutor dr. evil | 2008-12-25

7 Comentarios

  1. 44

    Para IE7 y arriba, usted puede usar este:

    int feature = FEATURE_DISABLE_NAVIGATION_SOUNDS;
    CoInternetSetFeatureEnabled(feature, SET_FEATURE_ON_PROCESS, true);

    utilizando la siguiente DLL importaciones

    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);

    (que se encuentra en el MS comentarios del sitio como una solución de WPF equipo: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345528&wa=wsignin1.0)

    • wow suena muy bien yo voy a probar
    • No funciona bien, esto es el trabajo para usted?
    • Parecía a trabajar para mí? (IE7, Win2008 server)
    • Funciona a la perfección para mí, en Vista de 64 con IE8.
    • A mi me funciona demasiado, Win7 64bit IE9 (nota: la aplicación es de 32 bits)
    • Obras. Vista de 64 bits IE10. También si el enlace a MS comentarios del sitio no funciona, pruebe a quitar el &wa=wsignin1.0 o simplemente haz clic aquí connect.microsoft.com/VisualStudio/feedback/…

  2. 13

    Me han envuelto de esta funcionalidad en un ready-to-use la clase. He utilizado parte de la información de la respuesta seleccionada y la Referencia de MSDN.

    Espero que esto sea útil a 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);
    }
    }
    • perfecto, muchas gracias. NOTA: si usted quiere que sea en silencio, el último parámetro en uso debe ser falsa. URLSecurityZoneAPI.InternetSetFeatureEnabled(URLSecurityZoneAPI.InternetFeaturelist.DISABLE_NAVIGATION_SOUNDS, URLSecurityZoneAPI.SetFeatureOn.PROCESO, false);
    • Muchas gracias, funciona bien. Debe aplicarse una vez cuando se inicia la aplicación.
    • Raro, pero yo tenía que dar el último parámetro a true: URLSecurityZoneAPI.InternetSetFeatureEnabled(URLSecurityZoneAPI.InternetFeaturelist.DISABLE_NAVIGATION_SOUNDS, URLSecurityZoneAPI.SetFeatureOn.PROCESO, true);
    • Si la propiedad es «Desactivar la Navegación de Sonidos», entonces tiene sentido lógico sería true para desactivar, y false para activar. Es sorprendente que la propiedad es una negación, a pesar de que, dada Microsoft directrices de mejores prácticas.
  3. 2

    Como se nota por los comentarios, y la respuesta por @James Crowley, es de hecho posible.


    Si usted navegar en IE, y por lo tanto el control, podrás conseguir el clic. A menos que cambie la configuración, o falso como ese vínculo, entonces no, usted no puede deshacerse de la haga clic en.

    • No es cierto – ver James Crowley respuesta a continuación.
  4. 1

    De los que no puedo hacer que funcione en VB.net, intentado 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)

    Edit: Encontré el problema, su plazo de declarar. De verdad 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

    • hey, ¿cómo poner la última parte en vb.net?? Tengo un montón de errores si puedo copiar/pegar el <securitycritical parte…
  5. 1

    Las Importaciones Del Sistema.En tiempo de ejecución.InteropServices <
    Las Importaciones Del Sistema.Seguridad

    qxxx el uso de esas importaciones

  6. 0

    La otra opción es para silenciar el equipo, pero eso no es una buena idea…

    • Más bien una respuesta humorística.
  7. -1

    Así que esto es limitación conocida entonces…

    Hay algún sucio hack /solución como enganche sonido de las llamadas de los ActiveX y desactivación de ellos (No estoy seguro si es posible sin entrar demasiado profundo)

    • No es una limitación conocida… es una característica del sistema para el usuario. Como tal, el usuario es el control de la misma. Eso es como decir que la página html no ser capaz de cambiar el color de la IE barra de título es una limitación conocida.
    • Robert es un «control» de una aplicación, por lo que es una limitación. Si windows no proporcionan una manera de acceder a ciertas claves del registro que no sería una característica que podría ser una limitación.

Dejar respuesta

Please enter your comment!
Please enter your name here