Deshabilitar Aero Peek en la aplicación WPF

Deseo desactivar Aero Peek en mi aplicación WPF (mi aplicación debe estar visible cuando el usuario coloca el mouse sobre el botón "Mostrar escritorio"). Yo uso esta firma PInvoke:

[Flags]
public enum DwmWindowAttribute : uint
{
    DWMWA_NCRENDERING_ENABLED = 1,
    DWMWA_NCRENDERING_POLICY,
    DWMWA_TRANSITIONS_FORCEDISABLED,
    DWMWA_ALLOW_NCPAINT,
    DWMWA_CAPTION_BUTTON_BOUNDS,
    DWMWA_NONCLIENT_RTL_LAYOUT,
    DWMWA_FORCE_ICONIC_REPRESENTATION,
    DWMWA_FLIP3D_POLICY,
    DWMWA_EXTENDED_FRAME_BOUNDS,
    DWMWA_HAS_ICONIC_BITMAP,
    DWMWA_DISALLOW_PEEK,
    DWMWA_EXCLUDED_FROM_PEEK,
    DWMWA_LAST
}

[Flags]
public enum DWMNCRenderingPolicy : uint
{
    UseWindowStyle,
    Disabled,
    Enabled,
    Last
}

[DllImport("dwmapi.dll", PreserveSig=false)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DwmIsCompositionEnabled();

[DllImport("dwmapi.dll", PreserveSig=false)]
public static extern Int32 DwmSetWindowAttribute(IntPtr hwnd,
                                                 DwmWindowAttribute dwmAttribute,
                                                 IntPtr pvAttribute,
                                                 uint cbAttribute);

y este uso:

    var helper = new WindowInteropHelper(this);
    helper.EnsureHandle();

    if (API.DwmIsCompositionEnabled())
    {
        var status = Marshal.AllocCoTaskMem(sizeof(uint));
        Marshal.Copy(new[] {(int) API.DWMNCRenderingPolicy.Enabled}, 0, status, 1);
        API.DwmSetWindowAttribute(helper.Handle,
                                  API.DwmWindowAttribute.DWMWA_EXCLUDED_FROM_PEEK,
                                  status,
                                  sizeof (uint));
    }

En mi sistema de 64 bits (Windows 7 Professional), solo funciona si ejecuto una aplicación de 64 bits. Si ejecuto una aplicación de 32 bits en modo WOW64, recibo una excepción:

"Una llamada a la función PInvoke 'XXX :: DwmSetWindowAttribute' ha desequilibrado la pila. Esto es probable porque la firma PInvoke administrada no coincide con la firma de destino no administrada. Verifique que la convención de llamada y los parámetros de la firma PInvoke coincidan con la firma no administrada de destino . "

¿Qué piensas sobre esto? ¿Cuál es la solución

Respuestas a la pregunta(1)

Su respuesta a la pregunta