怎么让Ctrl + Alt + Del 的任务管理器不能调用出来和Alt+F4不能用啊 急急急急急急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 功能键需要通过api和键盘钩子 任务管理器不能用, 直接监控它调出来就杀掉 这种可以不? 至于 alt +f4 呵呵这个还不知道呢 禁用任务管理器 private void timer1_Tick(object sender, EventArgs e) { Process[] p = Process.GetProcesses(); foreach (Process p1 in p) { try { if (p1.ProcessName.ToLower().Trim() == "taskmgr")//这里判断是任务管理器 { p1.Kill(); return; } } catch { return; } } }禁用ALT+F4的用钩子函数using System;using System.Windows.Forms;using System.Text;using System.Runtime.InteropServices;using System.Reflection;using System.IO;namespace HookLock{ public class Hook { #region 私有变量 /// <summary> /// 键盘钩子句柄 /// </summary> private IntPtr m_pKeyboardHook = IntPtr.Zero; /// <summary> /// 钩子委托声明 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); /// <summary> /// 键盘钩子委托实例 /// </summary> /// <res> /// 不要试图省略此变量,否则将会导致 /// 激活 CallbackOnCollectedDelegate 托管调试助手 (MDA)。 /// 详细请参见MSDN中关于 CallbackOnCollectedDelegate 的描述 /// </res> private HookProc m_KeyboardHookProcedure; // 底层键盘钩子 public const int idHook = 13; /// <summary> /// 安装钩子 /// </summary> /// <param name="idHook"></param> /// <param name="lpfn"></param> /// <param name="hInstance"></param> /// <param name="threadId"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr pInstance, int threadId); /// <summary> /// 卸载钩子 /// </summary> /// <param name="idHook"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle); /// <summary> /// 传递钩子 /// </summary> /// <param name="pHookHandle">是您自己的钩子函数的句柄。用该句柄可以遍历钩子链</param> /// <param name="nCode">把传入的参数简单传给CallNextHookEx即可</param> /// <param name="wParam">把传入的参数简单传给CallNextHookEx即可</param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)] public static extern int CallNextHookEx(IntPtr pHookHandle, int nCode, Int32 wParam, IntPtr lParam); #endregion 私有变量 #region 私有方法 /// <summary> /// 键盘钩子处理函数 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> /// <res>此版本的键盘事件处理不是很好,还有待修正.</res> private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) { //return 1; KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG)); if (m_pKeyboardHook != IntPtr.Zero) { switch (((Keys)m.vkCode)) { case Keys.LWin: case Keys.RWin: case Keys.Delete: case Keys.Alt: case Keys.Escape: case Keys.F4: case Keys.Control: case Keys.Tab: return 1; } } return 0; } #endregion 私有方法 #region 公共方法 /// <summary> /// 安装钩子 /// </summary> /// <returns></returns> public bool InstallHook() { //IntPtr pInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule); IntPtr pInstance = (IntPtr)4194304; if (this.m_pKeyboardHook == IntPtr.Zero) { this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc); this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0); if (this.m_pKeyboardHook == IntPtr.Zero) { this.UnInstallHook(); return false; } } return true; } /// <summary> /// 卸载钩子 /// </summary> /// <returns></returns> public bool UnInstallHook() { bool result = true; if (this.m_pKeyboardHook != IntPtr.Zero) { result = (UnhookWindowsHookEx(this.m_pKeyboardHook) && result); this.m_pKeyboardHook = IntPtr.Zero; } return result; } [StructLayout(LayoutKind.Sequential)] public struct KeyMSG { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; } #endregion 公共方法 }} 调用方法 Hook h = new Hook(); h.InstallHook(); 将ALT键申请为全局热键即可。 程序睡眠2秒,跳转到另一个窗体 winforms分屏显示的问题,只要能实现十六分,九分,四分,一分就可以 求一个正则表达式的写法 C#中如何给combobox的每个item显示tooltip,请高人指点 一个关于自动加入引用(reference)的问题 自动提示升级功能。 C# 的replace 问题,急,在线等! 关于c# 播放语音文件的问题。 变量的问题? 怎么设置线程休眠时间 请教一下程序并行开发的问题(项目管理) C#中如何对datagridview中的数据直接进行操作
禁用任务管理器
private void timer1_Tick(object sender, EventArgs e)
{
Process[] p = Process.GetProcesses(); foreach (Process p1 in p)
{
try
{
if (p1.ProcessName.ToLower().Trim() == "taskmgr")//这里判断是任务管理器
{
p1.Kill();
return;
}
}
catch
{
return;
}
}
}禁用ALT+F4的用钩子函数using System;
using System.Windows.Forms;
using System.Text;
using System.Runtime.InteropServices;
using System.Reflection;
using System.IO;namespace HookLock
{
public class Hook
{
#region 私有变量 /// <summary>
/// 键盘钩子句柄
/// </summary>
private IntPtr m_pKeyboardHook = IntPtr.Zero; /// <summary>
/// 钩子委托声明
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); /// <summary>
/// 键盘钩子委托实例
/// </summary>
/// <res>
/// 不要试图省略此变量,否则将会导致
/// 激活 CallbackOnCollectedDelegate 托管调试助手 (MDA)。
/// 详细请参见MSDN中关于 CallbackOnCollectedDelegate 的描述
/// </res>
private HookProc m_KeyboardHookProcedure; // 底层键盘钩子
public const int idHook = 13; /// <summary>
/// 安装钩子
/// </summary>
/// <param name="idHook"></param>
/// <param name="lpfn"></param>
/// <param name="hInstance"></param>
/// <param name="threadId"></param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn,
IntPtr pInstance, int threadId); /// <summary>
/// 卸载钩子
/// </summary>
/// <param name="idHook"></param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle); /// <summary>
/// 传递钩子
/// </summary>
/// <param name="pHookHandle">是您自己的钩子函数的句柄。用该句柄可以遍历钩子链</param>
/// <param name="nCode">把传入的参数简单传给CallNextHookEx即可</param>
/// <param name="wParam">把传入的参数简单传给CallNextHookEx即可</param>
/// <param name="lParam"></param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(IntPtr pHookHandle, int nCode,
Int32 wParam, IntPtr lParam); #endregion 私有变量 #region 私有方法
/// <summary>
/// 键盘钩子处理函数
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
/// <res>此版本的键盘事件处理不是很好,还有待修正.</res>
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//return 1;
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (m_pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.RWin:
case Keys.Delete:
case Keys.Alt:
case Keys.Escape:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
} #endregion 私有方法 #region 公共方法 /// <summary>
/// 安装钩子
/// </summary>
/// <returns></returns>
public bool InstallHook()
{
//IntPtr pInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule);
IntPtr pInstance = (IntPtr)4194304;
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc);
this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0);
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.UnInstallHook();
return false;
}
} return true;
} /// <summary>
/// 卸载钩子
/// </summary>
/// <returns></returns>
public bool UnInstallHook()
{
bool result = true;
if (this.m_pKeyboardHook != IntPtr.Zero)
{
result = (UnhookWindowsHookEx(this.m_pKeyboardHook) && result);
this.m_pKeyboardHook = IntPtr.Zero;
}
return result;
} [StructLayout(LayoutKind.Sequential)]
public struct KeyMSG
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
#endregion 公共方法
}
}
Hook h = new Hook();
h.InstallHook();