¡Buenas noches compañeros taringueros!
Bueno he sacado demasiado provecho de T! y quisiera devolver un poco de lo mucho que ésta gran comunidad me ha dado.
Yo hace algún tiempo presenté el inconveniente de que quería "deshabilitar" el botón de cerrar (o la famosa
), que aparece en las ventanas de Windows.
En esta ocasión les comparto un extracto de código que les permitirá deshabilitar el botón:
OJO: Está hecho para una ventana de WPF, y además no controla la combinación de teclas Alt + F4
Vamos a emplear los siguientes usings:
using System.Runtime.InteropServices;
using System.Windows.Interop;
En seguida agregaremos la siguientes líneas de código justo antes del método que crea los elementos:
[DllImport("user32.dll" )]
private static extern IntPtr GetSystemMenu(IntPtr hwnd, bool revert);
[DllImport("user32.dll" )]
private static extern bool DeleteMenu(IntPtr hMenu, uint position, uint flags);
Y en el método en el cual se "carga la ventana" escribiremos:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WindowInteropHelper helper = new WindowInteropHelper(this);
IntPtr hwnd = GetSystemMenu(helper.Handle, false);
DeleteMenu(hwnd, SC_CLOSE, 0);
}
Bueno espero que a más de uno le sea de utilidad y estamos en contacto.
¡Excelente día, noche o lo que sea!

Bueno he sacado demasiado provecho de T! y quisiera devolver un poco de lo mucho que ésta gran comunidad me ha dado.
Yo hace algún tiempo presenté el inconveniente de que quería "deshabilitar" el botón de cerrar (o la famosa
), que aparece en las ventanas de Windows.
En esta ocasión les comparto un extracto de código que les permitirá deshabilitar el botón:
OJO: Está hecho para una ventana de WPF, y además no controla la combinación de teclas Alt + F4
Vamos a emplear los siguientes usings:
using System.Runtime.InteropServices;
using System.Windows.Interop;
En seguida agregaremos la siguientes líneas de código justo antes del método que crea los elementos:
[DllImport("user32.dll" )]
private static extern IntPtr GetSystemMenu(IntPtr hwnd, bool revert);
[DllImport("user32.dll" )]
private static extern bool DeleteMenu(IntPtr hMenu, uint position, uint flags);
Y en el método en el cual se "carga la ventana" escribiremos:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WindowInteropHelper helper = new WindowInteropHelper(this);
IntPtr hwnd = GetSystemMenu(helper.Handle, false);
DeleteMenu(hwnd, SC_CLOSE, 0);
}
Bueno espero que a más de uno le sea de utilidad y estamos en contacto.
¡Excelente día, noche o lo que sea!
