WPF 全屏&&屏蔽系统快捷键

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace PingBiAll
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

//全屏
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.WindowState = System.Windows.WindowState.Normal;//还原窗口(非最小化和最大化)
this.WindowStyle = System.Windows.WindowStyle.None; //仅工作区可见,不显示标题栏和边框
this.ResizeMode = System.Windows.ResizeMode.NoResize;//不显示最大化和最小化按钮
this.Topmost = true; //窗口在最前

this.Left = 0.0;
this.Top = 0.0;
this.Width = System.Windows.SystemParameters.PrimaryScreenWidth;
this.Height = System.Windows.SystemParameters.PrimaryScreenHeight;
}

private void BtnClickShutdown(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
}
}

全屏

 

 

 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows;

namespace PingBiAll
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
//屏蔽系统热键
private struct KBDLLHOOKSTRUCT
{
public int vkCode;
int scanCode;
public int flags;
int time;
int dwExtraInfo;
}

private delegate int LowLevelKeyboardProcDelegate(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);

[DllImport("user32.dll")]
private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, IntPtr hMod, int dwThreadId);

[DllImport("user32.dll")]
private static extern bool UnhookWindowsHookEx(IntPtr hHook);

[DllImport("user32.dll")]
private static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);

[DllImport("kernel32.dll")]
private static extern IntPtr GetModuleHandle(IntPtr path);

private IntPtr hHook;
LowLevelKeyboardProcDelegate hookProc; // prevent gc
const int WH_KEYBOARD_LL = 13;

public App()
{
// hook keyboard
IntPtr hModule = GetModuleHandle(IntPtr.Zero);
hookProc = new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, hModule, 0);
if (hHook == IntPtr.Zero)
{
MessageBox.Show("Failed to set hook, error = " + Marshal.GetLastWin32Error());
}
}

protected override void OnExit(ExitEventArgs e)
{
UnhookWindowsHookEx(hHook); // release keyboard hook
base.OnExit(e);
}

private static int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam)
{
if (nCode >= 0)
switch (wParam)
{
//屏蔽下面的快捷键
case 256: // WM_KEYDOWN
case 257: // WM_KEYUP
case 260: // WM_SYSKEYDOWN
case 261: // M_SYSKEYUP
if (
(lParam.vkCode == 0x09 && lParam.flags == 32) || // Alt+Tab
(lParam.vkCode == 0x1b && lParam.flags == 32) || // Alt+Esc
(lParam.vkCode == 0x20 && lParam.flags == 32) || // Alt+Space
(lParam.vkCode == 0x73 && lParam.flags == 32) || // Alt+F4
(lParam.vkCode == 0x1b && lParam.flags == 0) || // Ctrl+Esc
(lParam.vkCode == 0x5b && lParam.flags == 1) || // Left Windows Key
(lParam.vkCode == 0x5c && lParam.flags == 1)) // Right Windows Key
{
return 1;
}
break;
}
return CallNextHookEx(0, nCode, wParam, ref lParam);
}
}
}

屏蔽系统快捷键

 

转自:https://www.cnblogs.com/lizhiqiang0204/p/13665020.html

WPF 全屏&&屏蔽系统快捷键

上一篇:(十六) C#基础学习之"this"关键词和断点调试 (for Mac)


下一篇:C#Socket文件传输(发送与接收代码)