WPFのアプリで、Alt + F4を無効にする

WPFのアプリで、Alt + F4を無効にする方法。
Alt + F4押下時に発行されるWM_SYSKEYDOWNを拾って、
それを処理しちゃった♪と嘘をつく。
すると、Alt + F4押したのに、反応しないということに!
原理は簡単ですね。

using System.Windows.Interop;
const int WM_SYSKEYDOWN = 0x0104;
const int VK_F4 = 0x73;
 
/// <summary>
/// Loadedイベントハンドラ
/// </summary>
private void OnLoaded(object sender, RoutedEventArgs e)
{
    HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
    source.AddHook(new HwndSourceHook(WndProc));
}
 
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if ((msg == WM_SYSKEYDOWN) &&
        (wParam.ToInt32() == VK_F4))
    {
        handled = true;
    }
 
    return IntPtr.Zero;
}

またWndProcを次のようにすると、タスクバーの右クリックメニュー?「閉じる」を選んでも閉じなくなる。

const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
 
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if ((msg == WM_SYSCOMMAND) &&
        (wParam.ToInt32() == SC_CLOSE))
    {
        handled = true;
    }
 
    return IntPtr.Zero;
}