在窗体的KeyDown方法中加入:
  if (ssAlt in shift) and (key = 115) then key := 0;
但加上几个输入框或按钮就无效了,难道要在这些组件的KeyDown里都加入以上代码吗
还有如何屏蔽win键

解决方案 »

  1.   

    function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
      var
        fEatKeystroke:BOOL;
        p:PKBDLLHOOKSTRUCT;
        begin
        result:=0;
        fEatKeystroke := false;
        p:=PKBDLLHOOKSTRUCT(lparam);
        if (ncode=HC_ACTION) then
        begin
        case wparam of
        WM_KEYDOWN,
        WM_SYSKEYDOWN,
        WM_KEYUP,
        WM_SYSKEYUP:
        featkeystroke :=(p.vkcode = VK_Lwin) or (p.vkcode = VK_Rwin)or (p.vkcode = VK_apps);
        end;
        end;
        if featkeystroke = true then
        result:=1;
        if ncode <> 0 then
        result := callnexthookex(0,ncode,wparam,lparam);
        end;procedure form1.lock;
    begin
      hhklowlevelkybd := setwindowshookexw(wh_keyboard_ll,LowlevelKeyboardproc,hinstance,0);
    end;锁住左右win键和application键
      

  2.   

    有一个更简单的,if(ssctrl in shift)and(ssalt inshift)and(ssdel in shift)then
      

  3.   

    把上面的写在onkeypress或onkeydown或onkeyup事件中,只 过程中定义了shift这个变量就可以了
      

  4.   

    xiaoqiang123(xiaoqiang) 的程序还需要些什么东西啊?
    PKBDLLHOOKSTRUCT、wh_keyboard_ll。。这些是什么
      

  5.   

    lianshaohua(连少华) ssdel没这东西啊
    wxjh(农民)gina解决 看不懂啊
    在win2000下如何解决屏蔽系统键、组合键?
      

  6.   

    不好意思,写错了
    gina如下
    一、原理 
    在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。在WinLogon初始化时,就向系统注册截获CTRL+ALT+DEL消息,所以其他程序就无法得到CTRL+ALT+DEL的消息。 
    WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供的接口,自己 
    可以编GINA DLL来代替MSGINA.DLL。 WinLogon初始化时会创建3个桌面: 
    (1)、winlogon桌面:主要显示window 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等 
    (2)、应用程序桌面:我们平时见到的那个有我的电脑的界面 
    (3)、屏幕保护桌面:屏幕保护显示界面。 在用户登陆以后,按下CTRL+ALT+DEL键的时候,WinLogon回调用GINA DLL的输出函数:WlxLoggedOnSAS, 
    这时正处于winlogon桌面,我们只要直接将他转向应用程序桌面,系统就不会显示Windows安全那个界面,换一种说法 
    也就是用户按下CTRL+ALT+DEL后,不会起什么作用。当是我们在切换桌面的时候会出现屏幕闪动! 二、程序实现 
    GINA DLL要输出下列函数(winlogon会调用) 
    WlxActivateUserShell 
    WlxDisplayLockedNotice 
    WlxDisplaySASNotice 
    WlxDisplayStatusMessage 
    WlxGetStatusMessage 
    WlxInitialize 
    WlxIsLockOk 
    WlxIsLogoffOk 
    WlxLoggedOnSAS 
    WlxLoggedOutSAS 
    WlxLogoff 
    WlxNegotiate 
    WlxNetworkProviderLoad 
    WlxRemoveStatusMessage 
    WlxScreenSaverNotify 
    WlxShutdown 
    WlxStartApplication 
    WlxWkstaLockedSAS 
    为了简化编程,我们从MSGINA.DLL中动态获取上诉函数,在自定义的DLL中(以下称为NoReboot.DLL)中直接调用MSGINA.DLL 
    的函数即可。现在我们要处理的就是WlxLoggedOnSAS函数: 
    int WINAPI WlxLoggedOnSAS ( 
            PVOID pWlxContext, 
            DWORD dwSasType, 
            PVOID pReserved) 
            {  
            HANDLE hMutex; 
            WriteInfo("WlxLoggedOnSAS \r\n"); //用于记录信息 
     if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL){ //屏蔽CTRL_ALT_DEL,也可以根据特定条件来决定是否要屏蔽 
            //我采用了Mutex来控制是否屏蔽,(注意:要用unicode) 
            hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"_ac952_z_cn_CTRL_ALT_DEL"); 
            if (hMutex){ 
            CloseHandle(hMutex); 
            WriteInfo("disble CTRL+ALT+DEL \r\n"); 
            return WLX_SAS_ACTION_NONE; //将屏幕切换到应用程序桌面,屏蔽掉CTRL+ALT+DEL 
            } 
            else 
            WriteInfo("not disble CTRL+ALT+DEL \r\n"); 
            } 
            return prcWlxLoggedOnSAS ( //这是我从MSGINA.DLL中获取的函数。 
            pWlxContext, 
            dwSasType, 
            pReserved); 
            } 我们要在自己的程序中调用hMutex = CreateMutex(NULL, FALSE, "_ac952_z_cn_CTRL_ALT_DEL");就可屏蔽CTRL+ALT+DEL。 三、安装和注意事项: 在编写GIAN DLL中要注意,GINA DLL使用的是unicode。 GINA DLL的安装: 
    键名 : \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon  
    变量名 : GinaDLL  
    变量类型 : [REG_SZ]  
    内容 : "你的GINA DLL的名称" 如:"NoReboot.DLL: 将你的GINA DLL(NoReboot.dll)拷贝到系统目录下(system32),重启机器,你的GINA DLL(NoReboot.dll)就会运行。 
    如果出现进不了你的系统,那你进入DOS后,将msgina.dll拷贝成你的GINA DLL(NoReboot.dll)就可进入了,或者进入安全模式,删除掉那个键值。 
      

  7.   

    用你自定义的dll替换掉msgina.dll中WlxLoggedOnSAS函数
      

  8.   

    具体的看msdn中间
    Winlogon and GINA Reference 部分This section covers the functions that the GINA DLL must export, the GINA structures, and the Winlogon support functions that the GINA DLL can call. For information on See 
    Functions that must be implemented by a custom GINA DLL GINA Export Functions 
    Winlogon functions that can be called by the GINA Winlogon Support Functions 
    Structures used to pass information between the GINA and Winlogon GINA Structures