C# Winform 实现屏蔽键盘的win和alt+F4的实现代码

此时希望用户不能通过键盘alt+F4来结束程序及通过Win的组合键对窗口进行操作。我在网上搜索了一下,采用全局键盘钩子的方法可以做到屏蔽用户对键盘的操作。。以下为相关代码,用到了Form1_load事件和Form1_FormClosing事件:


代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
namespace WindowsApplication10
{
public partial class Form1 : Form
{
// 安装钩子
[DllImport("user32.dll")]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
// 卸载钩子
[DllImport("user32.dll")]
public static extern bool UnhookWindowsHookEx(int idHook);
// 继续下一个钩子
[DllImport("user32.dll")]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
//声明定义
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
static int hKeyboardHook = 0;
HookProc KeyboardHookProcedure;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
HookStart();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
HookStop();
}
// 安装钩子
public void HookStart()
{
if (hKeyboardHook == 0)
{
// 创建HookProc实例
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//定义全局钩子
hKeyboardHook = SetWindowsHookEx(13, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
if (hKeyboardHook == 0)
{
HookStop();
throw new Exception("SetWindowsHookEx failed.");
}
}
}
//钩子子程就是钩子所要做的事情。
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//这里可以添加别的功能的代码
return 1;
}
// 卸载钩子
public void HookStop()
{
bool retKeyboard = true;
if (hKeyboardHook != 0)
{
retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
hKeyboardHook = 0;
}
if (!(retKeyboard)) throw new Exception("UnhookWindowsHookEx failed.");
}
}
}

(注:该方法可以屏蔽win和alt+F4但是不能屏蔽ctrl+alt+del)

(0)

相关推荐

  • C#隐藏控制台键盘输入的方法

    本文实例讲述了C#隐藏控制台键盘输入的方法.分享给大家供大家参考.具体如下: using System; namespace RobvanderWoude { class HideInput { static int Main( string[] args ) { try { bool clearscreen = false; if ( args.Length > 1 ) { return WriteError( "Too many command line arguments"

  • C#键盘输入回车键实现点击按钮效果的方法

    本文实例讲述了C#键盘输入回车键实现点击按钮效果的方法,在C#项目开发中非常具有实用价值.分享给大家供大家参考. 具体实现方法如下: 把Form的KeyPreview设为true 然后设置KeyDown,KeyUp或KeyPress事件.在KeyDown事件中截获. 主要功能代码如下: this.KeyDown += new KeyEventHandler(textBox1_KeyDown); private void textBox1_KeyDown(object sender, KeyEve

  • C# Hook钩子实例代码 截取键盘输入

    一.关于本文 以最通俗的语言说明钩子的使用方法,具体到钩子的详细介绍可以参照下面的网址: http://www.microsoft.com/china/community/program/originalarticles/techdoc/hook.mspx 二.钩子的简单介绍 从字面上理解,钩子就是想钩住些东西,在程序里可以利用钩子提前处理些Windows消息. 例子:有一个Form,Form里有个TextBox,我们想让用户在TextBox里输入的时候,不管敲键盘的哪个键,TextBox里显示

  • 解读在C#中winform程序响应键盘事件的详解

    在winform程序中给form添加了keyup事件,但是程序却不响应键盘事件,解决办法是重写Form基类的ProcessCmdKey(ref Message msg, Keys keyData)方法. 复制代码 代码如下: protected override bool ProcessCmdKey(ref Message msg, Keys keyData)        {            if (keyData == Keys.F4)            {            

  • 基于C#实现的HOOK键盘钩子实例代码

    本文所述为基于C#实现的HOOK实例,该实例可用来屏蔽系统热键.程序主要实现了安装钩子.传递钩子.卸载钩子等功能.在传递钩子中: <param name="pHookHandle">是您自己的钩子函数的句柄.用该句柄可以遍历钩子链</param> <param name="nCode">把传入的参数简单传给CallNextHookEx即可</param> <param name="wParam"

  • c# Form中的键盘响应具体实现思路

    由于工程项目需要,要在全屏Form中加上键盘ESC的响应,实现的效果就是:全屏中press键盘上的Escape键,程序结束. 原本觉得挺简单的功能,却捣鼓了一会儿才解决.大致总结一下步骤: 首先在form的designer下加上 this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_KeyPress); 然后写响应函数 复制代码 代码如下: private void Form_KeyPress(objec

  • C#键盘鼠标钩子实例

    本文实例讲述了C#键盘鼠标钩子的实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.ComponentModel; using System.Ref

  • C# 键盘Enter键取代Tab键实现代码

    说明:在填写表数据时当输入完一个文本框后,输入下一个文本框时需要用Tab键切换,但是有的人喜欢用Enter键切换下一个,此方法是Enter取代Tab键. 效果: 注释:键盘Enter键数字为:13 键盘Tab键数字为:9 函数代码: 复制代码 代码如下: private void SetEnt()        {            foreach (Control txt in (this.Page.Form.FindControl("ContentPlaceHolderEntity&qu

  • C#检查键盘大小写锁定状态的方法

    本文实例讲述了C#检查键盘大小写锁定状态的方法.分享给大家供大家参考.具体分析如下: 1.命名空间: using System.Runtime.InteropServices; 2.导入方法 [DllImport("user32.dll", EntryPoint = "GetKeyboardState")] public static extern int GetKeyboardState(byte[] pbKeyState); 3.大小写状态 public sta

  • C# Winform 实现屏蔽键盘的win和alt+F4的实现代码

    此时希望用户不能通过键盘alt+F4来结束程序及通过Win的组合键对窗口进行操作.我在网上搜索了一下,采用全局键盘钩子的方法可以做到屏蔽用户对键盘的操作..以下为相关代码,用到了Form1_load事件和Form1_FormClosing事件: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing

  • 深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解

    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理它.钩子机制允许应用程序截获处理window消息或特定事件. 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权.这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的

  • JS 屏蔽键盘不可用与鼠标右键不可用的方法

    今天做了2個小实验, 屏蔽键盘不可用 屏蔽鼠标右鍵不可用 实验一,屏蔽键盘不可用 键盘共有3個事件 a.keydown:按下键盘上某个按键时触发,一直按住某键则会持续触发 b.keypress:按下某个按键并产生字符时触发,即忽略Shift,Alt,Ctrl等功能键 c.keyup:释放某个按键时触发 复制代码 代码如下: <script language="javascript">        function block() {            event.ke

  • C#实现Winform小数字键盘模拟器

    目录 一.构建计算器的界面 二.构建控件的开放属性 三.控件键盘输入 四.让文本框处理焦点状态以及光标位置的处理 五.实现退格.清除内容的功能 六.实现Enter确认得到结果的功能 文章开始之前,先看一下效果图,看是不是您正所需要的: 一.构建计算器的界面 要构建出一个好看点的计算器界面,还是需要颇费些小心思的,我做这个的时候,也花了两三个小时的时间构建这个界面. 其主要的使用控制是TableLayoutPanel控件. 另外一个小难点则在于内容控件Textbox的显示,要让文字垂直居中,在没有

  • JS实现屏蔽shift,Ctrl,alt等功能键的方法

    本文实例讲述了JS实现屏蔽shift,Ctrl,alt等功能键的方法.分享给大家供大家参考.具体实现方法如下: <script> function lock(){ if(event.shiftKey) alert("禁止按Shift键!"); } if(event.ctrlKey) alert("禁止按Ctrl键!"); } if(event.altKey) alert("禁止按alt键!"); } document.onkeydow

  • 屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键

    屏蔽鼠标右键.Ctrl+N.Shift+F10.Alt+F4.F11.F5刷新.退格键 //屏蔽鼠标右键.Ctrl+N.Shift+F10.F11.F5刷新.退格键 function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键 function window.onhelp(){return false} //屏蔽F1帮助 function document.onkeydown(){ if((window.event.alt

  • Winform基于多线程实现每隔1分钟执行一段代码

    本文实例讲述了Winform基于多线程实现每隔1分钟执行一段代码的方法,分享给大家供大家参考.具体实现方法如下: 1.定义相关的类Timer.cs,代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace SMIS2013.DSS.Monitor {     public class

  • vbs屏蔽键盘按键

    复制代码 代码如下: 'code BY 伤脑筋 www.ntbak.cn  www.jb51.net'copy to filename.vbs  dim num,var,fso,wsh,pathname  num = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,"+_  "V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9,F1,F2,F3,F4,F5,F6,"+_  "F7,F8,F9,F10,F11,F

  • android监听软键盘的弹出与隐藏的示例代码

    情境:布局文件中有ScrollView,ScrollView中有个EditView,布局底部有一个控件(见下面布局代码),程序一启动EditView就获取焦点,弹出软键盘,将这个底部的控件也顶上去了,感觉不太好,所以我就想监听下软键盘弹出,此时去隐藏底部控件,软键盘隐藏时则显示底部控件. 初始:       <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@

随机推荐