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

此时希望用户不能通过键盘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)

时间: 2024-11-29 21:04:43

C# Winform 实现屏蔽键盘的win和alt+F4的实现代码_C#教程的相关文章

C# Winform 子窗体访问父级窗体的控件和属性_C#教程

今天在做一个联系人管理的C#设计时,遇到了这个问题,我需要将父窗体中的textBox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textBox.text;来进行值传递,然而并无卵用,经过多次试验,找到了一个比较简单的解决方法: 一.子窗体调用父窗体的静态变量 父窗体:Logout 子窗体:Affirm 父窗体文本框:tB_Logout_Username public partial class Logout : Form { //定义一个静态变量存放父窗体中的文本框的值 pu

在Winform和WPF中注册全局快捷键实现思路及代码_C#教程

快捷键辅助类 复制代码 代码如下: class HotKey { /// <summary> /// 如果函数执行成功,返回值不为0. /// 如果函数执行失败,返回值为0.要得到扩展错误信息,调用GetLastError..NET方法:Marshal.GetLastWin32Error() /// </summary> /// <param name="hWnd">要定义热键的窗口的句柄</param> /// <param na

C# Winform 调用系统接口操作 INI 配置文件的代码_C#教程

包括了写入和读取功能. 写入的时候, 如果文件不存在会自动创建. 如果对应的键已经存在, 则自动覆盖它的值. 读取的时候, 如果对应的文件不存在, 或者键名不存在, 则返回一个 empty 值. 非常方便 ^_^ 复制代码 代码如下: // 系统接口类 public static class WinAPI { [DllImport("kernel32")] // 写入配置文件的接口 private static extern long WritePrivateProfileString

用 C# Winform做出全透明的磨砂玻璃窗体效果代码_C#教程

首先, 调用系统 API, 这里如果要引用神马的, 就不一一列出了, 大家自己引用一下. 复制代码 代码如下: [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public int Left; public int Right; public int Top; public int Bottom; } [DllImport("dwmapi.dll", PreserveSig = false)] public s

c# SQLHelper(for winForm)实现代码_C#教程

SQLHelper.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace HelloWinForm.DBUtility { class SQLHelper { #reg

代码-VC中PreTranslateMessage屏蔽虚拟键盘的WIN键失效

问题描述 VC中PreTranslateMessage屏蔽虚拟键盘的WIN键失效 void CCTV_MP3_Speak::OnBnClickedSoftwareKey() { //启动虚拟键盘 ShellExecute(NULL,_T("open"),_T("C:WindowsSystem32osk.exe"),_T(""),_T(""),SW_SHOW); } BOOL CCTV_MP3_Speak::PreTransla

求助:请问分别用什么代码是屏蔽鼠标,热键或者屏蔽键盘呀???

问题描述 求助:请问分别用什么代码是屏蔽鼠标,热键或者屏蔽键盘呀???``麻烦给代码示例``谢谢``` 解决方案 解决方案二:没有用户的输入要你这个程序干嘛??病毒么?解决方案三:你屏蔽了人家怎么用,是病毒就另当别论!解决方案四:分少了一点解决方案五:只是要想屏蔽某些键或热键```顺便一起问下`增加下知识``呵呵解决方案六:主要是要想屏蔽某些键或热键解决方案七:病毒是不会用C#做的吧``呵呵解决方案八:最简单的就是overridevoidWndProc(refMessagem)底层的就是hook

JavaScript屏蔽键盘常用代码

在你链接的时候用 <a href="网页特效: location.replace(url)"> JavaScript屏蔽主窗口滚动条 在body标签里加上 style="overflow-y:hidden" JavaScript屏蔽拷屏,不断地清空剪贴板 在body标签里加上 onload="setInterval('clipboardData.setData('Text','')',100)" JavaScript屏蔽网站的打印功能

JS 屏蔽键盘不可用与鼠标右键不可用的方法_javascript技巧

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