各位大虾~..帮忙用API写个屏蔽Ctrl+ Alt+ Del热键的程序吧~~。。晚上的饭就我了..你们也不用客气~~

解决方案 »

  1.   

    参考这个:
    http://www.codeproject.com/win32/AntonioWinLock.asp
      

  2.   

    protected override bool ProcessDialogKey(System.Windows.Forms.Keys  aKey)     
    {
       if (aKey == Keys.Alt)
         {
              ......
      

  3.   

    这个不好解决,因为这个是系统设置的,优先级非常高的快捷键,我曾把Ctrl+Alt屏蔽掉了,但是还是无法屏蔽这3个组合的快捷键。当然也有办法就是修改主策略,或者注册表。
    注:用钩子函数无法屏蔽这个组合键
      

  4.   

    转帖
    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; }
    }
    }