对于触屏的软件来说,我们调出系统键盘以后,我们不想用户回到桌面,这时候我们就需要屏蔽windows键,

 #region 屏蔽WIN功能键public delegate int HookProc(int nCode, int wParam, IntPtr lParam);private static int hHook = 0;public const int WH_KEYBOARD_LL = 13;//LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,会在你截取之前获得键盘。 private static HookProc KeyBoardHookProcedure;//键盘Hook结构函数
        [StructLayout(LayoutKind.Sequential)]public class KeyBoardHookStruct{public int vkCode;public int scanCode;public int flags;public int time;public int dwExtraInfo;}//设置钩子 [DllImport("user32.dll")]public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]//抽掉钩子 public static extern bool UnhookWindowsHookEx(int idHook);[DllImport("user32.dll")]//调用下一个钩子 public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);[DllImport("kernel32.dll")]public static extern int GetCurrentThreadId();[DllImport("kernel32.dll")]public static extern IntPtr GetModuleHandle(string name);public static void Hook_Start(){// 安装键盘钩子 if (hHook == 0){KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure,GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);//如果设置钩子失败. if (hHook == 0){Hook_Clear();}}}//取消钩子事件 public static void Hook_Clear(){bool retKeyboard = true;if (hHook != 0){retKeyboard = UnhookWindowsHookEx(hHook);hHook = 0;}//如果去掉钩子失败. if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");}//这里可以添加自己想要的信息处理 private static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam){if (nCode >= 0){KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));if (kbh.vkCode == 91) // 截获左win(开始菜单键)
                {return 1;}if (kbh.vkCode == 92)// 截获右win
                {return 1;}if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc
                {return 1;}if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4
                {return 1;}if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab
                {return 1;}if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc
                {return 1;}if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+空格
                {return 1;}if (kbh.vkCode == 241) //截获F1
                {return 1;}if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)      //截获Ctrl+Alt+Delete
                {return 1;}if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift
                {return 1;}if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) //截获Ctrl+Alt+空格
                {return 1;}}return CallNextHookEx(hHook, nCode, wParam, lParam);}public static void TaskMgrLocking(bool bLock){if (bLock){try{RegistryKey r = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);r.SetValue("DisableTaskmgr", "1"); //屏蔽任务管理器
                }catch{RegistryKey r = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");r.SetValue("DisableTaskmgr", "0");}}else{Registry.CurrentUser.DeleteSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");}}#endregion//  调用,这个需要放在主窗体的load方法中//private void Load(object sender, EventArgs e)//{//    Hook_Start();//}//卸载private void FormClosing(object sender, FormClosingEventArgs e){Hook_Clear();}

View Code

转载于:https://www.cnblogs.com/aijiao/p/9951090.html

C# 屏蔽windows功能键相关推荐

  1. 修改注册表屏蔽windows系统快捷键的方法

    1.屏蔽鼠标右键 HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer 修改内容: 在 ...

  2. electorn+AutoHotkey屏蔽windows按键

    说明:屏蔽windows快捷键的方式有多种,可以写c++插件引入到程序中,当然如何对c++了解到不够深入,成本可能比较高,另外就是采用autoHotKey,windows 平台下的热键脚本语言程序,低 ...

  3. java屏蔽功能键_Java屏蔽Windows按键代码

    用java 能实现这功能吗,iHookKeyboard (屏蔽键盘...,想用java 实现. 不行的,JAVA没有钩子,可以考虑通过JNI调用C. 如何用JAVA做禁用键盘,鼠标,任务管理器等任人都 ...

  4. 【91xcz】如何屏蔽Windows 7中智能排列的功能

    系统的功能是很多的,不过有些功能我们不一定要时候,当不使用的时候该如何屏蔽掉呢?在Windows 7中,微软为桌面窗口设置新加了一个功能:智能排列.其实翻译成"智能排列"并不是很准 ...

  5. 屏蔽Windows系统输入法快捷键Ctrl+Space

    快速解决 新建文件1.reg 写入以下内容 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Control Panel\Input Met ...

  6. 屏蔽windows图片和传真查看器

    windows xp缺省打开图片用的是"windows图片和传真查看器",如果我们装了其他的图像浏览工具(例如acdsee),图像无法关联到acdsee上(acdsee5.0以下版 ...

  7. 策略本地网站服务器屏蔽,windows如何通过本地安全策略屏蔽某些IP访问

    1.登录服务器点击 开始 - 运行 - 输入 secpol.msc,然后回车打开 本地安全策略 窗口,如下图点击 创建IP安全策略 ; 2.然后点击 下一步 ,添加下规则名称点击 下一步 ,此处的勾选 ...

  8. 屏蔽Windows按键(除却ALT+CTRL+DELETE)

    钩子(hook),指用api来提前拦截并处理windows消息的手段. 全局钩子是系统钩子的一种,当指定的一些消息被系统中任何应用程序所处理时,这个钩子就被调用. ALT+CTRL+DELETE是微软 ...

  9. 微软发布屏蔽Win10升级的官方办法

    微软发布屏蔽Win10升级的官方办法 导读 微软似乎从来就没有像现在这么焦燥过,当然了,攸关生死,他要还是能"蛋"定得住,那才真叫怪了.你看,为了推广Windows 10,一向傲娇 ...

  10. Windows 令人“社死”的新功能,你都知道吗?

    相信每个人电脑上都或多或少都保存着一些秘密,或许是某个人的照片,或许是一段往事,也有可能是一些不可描述的学习资料. 而这些东西,想必都是不能被除了自己以外的人看到的. 此前,Windows 的搜索框功 ...

最新文章

  1. 政、企、学三方视角下的智慧城市发展 | 2020中关村论坛“人工智能与城市可持续发展论坛”成功举办...
  2. VSTO进行时––开发日志之二(VSTO Development diary II)
  3. Kail Linux渗透测试教程之Recon-NG框架
  4. Java常量字符串String理解
  5. unix环境高级编程-进程间通信
  6. Android 开发工具类 27_多线程下载大文件
  7. 基于SQL的日志分析工具myselect
  8. 洛谷P1173:[NOI2016] 网格(tarjan、离散化)
  9. 网关服务Spring Cloud Gateway(三)
  10. 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
  11. 2021年宇华实验中学高考成绩查询,2021年河南高考状元多少分,今年河南高考状元资料名单...
  12. linux模拟tcp测试工具,TCP测试小工具tcping for linux
  13. 商业楼与写字楼的区别详解
  14. daemontools的安装、简介
  15. python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
  16. PHP 与 JSP 比较(PHP、ASP、JSP是什么)
  17. 服务器画图plots不显示,Rstudio的Plots不显示图形
  18. 使用itext对pdf指定文字位置插入图片
  19. C代码如何跑起来(程序编译和预处理)
  20. Redis使用入门(二)【Windows下Python客户端redis-py使用】

热门文章

  1. 组合模式——公司组织结构
  2. Ubuntu server搭建vsftpd小记
  3. 两个链表是否相交 + 赛马(分桶)
  4. os.environ 和 keras.json
  5. XLNET:换一个思路做预训练,效果杠杠滴
  6. 【每日算法Day 108】一道简单的二叉树题目,写法还是挺多的。
  7. Resource stopwords not found. Please use the NLTK Downloader to obtain the resource的解决
  8. numpy-np.isin
  9. pytorch---模型加载与保存(3)保存和加载 Checkpoint 用于推理/继续训练
  10. 4天卖断货3次!悄然登顶新书榜,这书绝对是四月最大黑马!