如何屏蔽 Ctrl+ Alt+ Del 热键 各位大虾~..帮忙用API写个屏蔽Ctrl+ Alt+ Del热键的程序吧~~。。晚上的饭就我了..你们也不用客气~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考这个:http://www.codeproject.com/win32/AntonioWinLock.asp protected override bool ProcessDialogKey(System.Windows.Forms.Keys aKey) { if (aKey == Keys.Alt) { ...... 这个不好解决,因为这个是系统设置的,优先级非常高的快捷键,我曾把Ctrl+Alt屏蔽掉了,但是还是无法屏蔽这3个组合的快捷键。当然也有办法就是修改主策略,或者注册表。注:用钩子函数无法屏蔽这个组合键 转帖using System;using System.Runtime.InteropServices;using System.IO;using System.Reflection;using System.Windows.Forms;namespace HookTest{/// <summary>/// Hook 的摘要说明。/// </summary>public class Hook{public Hook(){//// TODO: 在此处添加构造函数逻辑//}// 安装钩子public const int WH_KEYBOARD = 13;public const int WH_MOUSE_LL = 14;[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]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",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); // 取得当前线程编号[DllImport("kernel32.dll")]static extern int GetCurrentThreadId(); //定义委托public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); static int hKeyboardHook = 0; HookProc KeyboardHookProcedure;//处理private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam){KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));if ((int) m.vkCode == 91){//textbox1.Text = “A”//MessageBox.Show(wParam.ToString(),"dd");return 1;}return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam); }// 安装钩子public void HookStart(){if(hKeyboardHook == 0){// 创建HookProc实例KeyboardHookProcedure = new HookProc(KeyboardHookProc);// 设置线程钩子//hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardHookProcedure, IntPtr.Zero, //GetCurrentThreadId());hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD,KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);// 如果设置钩子失败if(hKeyboardHook == 0 ) {HookStop();throw new Exception("SetWindowsHookEx failedeeeeeeee.");}}}// 卸载钩子public void HookStop(){bool retKeyboard = true;if(hKeyboardHook != 0){retKeyboard = UnhookWindowsHookEx(hKeyboardHook);hKeyboardHook = 0;} if (!(retKeyboard)) {throw new Exception("UnhookWindowsHookEx failedsssss.");}}public struct KeyMSG{public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; }}} C# 序列化 C#2005编写的WinForm程序,建立安装项目生成安装包安装完后,运行程序没反应 c#修改图片的同时如何修改文件夹中相应的图片 菜鸟问题---tag属性跟对象的绑定 怎样显示"\0"啊 C#字节数组和字符串相互转换 windows8.1 64位环境 vs2008 运行报找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 如何正常终止一个线程!而不抛出ThreadAbortException! 如何修改DATAGRID控件的列标题? 咨询一个如何立即结束线程的问题 treeview中如何根据子节点得到根节点? 最近有出书的想法,欢迎大家提建议
http://www.codeproject.com/win32/AntonioWinLock.asp
{
if (aKey == Keys.Alt)
{
......
注:用钩子函数无法屏蔽这个组合键
using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
namespace HookTest
{
/// <summary>
/// Hook 的摘要说明。
/// </summary>
public class Hook
{
public Hook()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 安装钩子
public const int WH_KEYBOARD = 13;
public const int WH_MOUSE_LL = 14;[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]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",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); // 取得当前线程编号[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId(); //定义委托
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
static int hKeyboardHook = 0;
HookProc KeyboardHookProcedure;//处理
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam){KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if ((int) m.vkCode == 91){//textbox1.Text = “A”
//MessageBox.Show(wParam.ToString(),"dd");
return 1;}return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
// 安装钩子
public void HookStart(){if(hKeyboardHook == 0){// 创建HookProc实例KeyboardHookProcedure = new HookProc(KeyboardHookProc);// 设置线程钩子//hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardHookProcedure, IntPtr.Zero, //GetCurrentThreadId());
hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD,KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);// 如果设置钩子失败if(hKeyboardHook == 0 ) {HookStop();throw new Exception("SetWindowsHookEx failedeeeeeeee.");}}}// 卸载钩子public void HookStop(){bool retKeyboard = true;if(hKeyboardHook != 0){retKeyboard = UnhookWindowsHookEx(hKeyboardHook);hKeyboardHook = 0;} if (!(retKeyboard))
{
throw new Exception("UnhookWindowsHookEx failedsssss.");}
}
public struct KeyMSG{public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; }
}
}