如何在XP中封闭Ctrl+Alt+Del? 如何在Win所有系列中封闭开始菜单快捷键?

解决方案 »

  1.   

    以前有个帖子主  题:  请问:如何在VB中禁止“开始按钮”和“开始菜单”? 
    作  者:  tiger322 (tiger322)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  VB API 
    问题点数:  20 
    回复次数:  12 
    发表时间:  2003-2-27 21:20:57 
       
     
       
    本人在设计一个考试程序,要求在程序运行时不能打开其它的程序,这样就要求禁止“开始按钮”和“开始菜单”,并使程序始终在最上方,请问如何实现?在线等待  
     
     
     回复人: jennyvenus() ( ) 信誉:101  2003-2-27 23:47:54  得分:0 
     
     
     再那个帖子里我回答了如何彻底的杀死开始菜单,遗憾的是我不知道如何重新打开,实际上我觉得应该采用全局hook,如果不允许运行其他程序,我觉得必须做到
    1)禁止开始菜单
    2)禁止ctrl+alt+del,因为xp,2k能够用taskmgr.exe运行程序
    3)禁止alt+tab
    4)窗体全屏而且总在最前而且不能最小化不能移动
    ...
    。  
     
    Top 
     
     回复人: suntt(两条腿的狗) ( ) 信誉:100  2003-2-28 7:38:24  得分:0 
     
     
     up一下  
     
    Top 
     
     回复人: jeewin() ( ) 信誉:100  2003-2-28 13:26:51  得分:0 
     
     
     程序运行初始化时设置注册表里相应的值屏蔽那些功能,退出程序时再清除设置。不知行不行,注册表里有一项可以禁止所有程序,但我忘了具体在哪了。
    纯属个人意见:)  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 20:44:37  得分:0 
     
     
     请问:如何彻底的杀死开始菜单?  
     
    Top 
     
     回复人: jennyvenus() ( ) 信誉:101  2003-2-28 20:49:56  得分:0 
     
     
     '这个程序能够完全禁止开始菜单,而且能够恢复开始菜单,ctrl+esc和win键都不管用,但是在xp,2k下还是能够通过taskmgr.exe(任务管理器)运行新的程序,所以还要禁止ctrl+alt+del。Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Dim task As Long
    Dim win As Long
    Dim bswap As BooleanPrivate Sub Command1_Click()
        If Not bswap Then
            SetParent win, Me.hwnd
            ShowWindow win, 0
        Else
            SetParent win, task
            ShowWindow win, 1
        End If
        bswap = Not bswap
    End SubPrivate Sub Form_Load()
        task = FindWindow("Shell_TrayWnd", vbNullString)
        If task Then
            win = FindWindowEx(task, 0, "Button", vbNullString)
            If win Then
            Else
                MsgBox "没有找到开始按钮"
                Unload Me
            End If
        Else
            MsgBox "没有找到任务栏"
            Unload Me
        End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        If bswap Then
            SetParent win, task
            ShowWindow win, 1
        End If
    End Sub
      
     
    Top 
     
     回复人: Girl1983(长发女生) ( ) 信誉:93  2003-2-28 20:54:43  得分:0 
     
     
     有一个外国人做的DLL很好用,禁止了一切。  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 21:17:33  得分:0 
     
     
     在哪里可以,或者叫什么名字?  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 21:20:06  得分:0 
     
     
     在哪里可以下载这个DLL?  
     
    Top 
     
     回复人: dingyanwei() ( ) 信誉:100  2003-03-02 19:22:00  得分:0 
     
     
     Attribute VB_Name = "DisableCtrlAltDelM"
    '屏蔽Windows快捷键和热启动
    'dyw
    '2002.10.30'DisableCtrlAltDel(Boolean)' Used for DisableCtrlAltDelete
    Private Const SPI_SETDESKWALLPAPER = 20&
    Private Const SPIF_UPDATEINIFILE = 0
    Private Const SPIF_SENDWININICHANGE = 2
    Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function SystemParametersInfo Lib _
    "user32" Alias "SystemParametersInfoA" (ByVal uAction _
    As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
    ByVal fuWinIni As Long) As Long
    Public Sub DisableCtrlAltDel(bDisabled As Boolean)
        ' 禁止或恢复Ctrl+Alt+Del键和Ctrl+Esc键的使用
        Dim x As Long
        x = SystemParametersInfo(97, bDisabled, CStr(1), 0)End Sub
      
     
    Top 
     
     回复人: jennyvenus() ( ) 信誉:101  2003-03-02 21:28:00  得分:0 
     
     
     dingyanwei的程序只能在98,me下有效,在2k,xp下无效,有的人说修改注册表能够实现,但是我照例操作就不管用。
      
     
    Top 
     
     回复人: FUNDGIRL(阿弥陀佛) ( ) 信誉:100  2003-03-10 08:57:00  得分:0 
     
     
     开始菜单就是一个类名为"basebar",标题为空的窗体
    只要用Findwindow查找一个类名为"basebar"标题为空的窗体再向它发送WM_close消息就行了sendmessage findwinodw ("basebar",""),&h10,0,0
    就搞定了!
    API声明自己加把自己的窗体提前只要先把窗体的位置提到最顶,再设置一个计时器,不停的激活自身这个窗体就行了!好像激活窗体VB里有自带函数。activewindow吧?
      
     
      

  2.   

    以前的帖子
    主  题:  请问:如何在VB中禁止“开始按钮”和“开始菜单”? 
    作  者:  tiger322 (tiger322)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  VB API 
    问题点数:  20 
    回复次数:  12 
    发表时间:  2003-2-27 21:20:57 
       
     
       
    本人在设计一个考试程序,要求在程序运行时不能打开其它的程序,这样就要求禁止“开始按钮”和“开始菜单”,并使程序始终在最上方,请问如何实现?在线等待  
     
     
     回复人: jennyvenus() ( ) 信誉:101  2003-2-27 23:47:54  得分:0 
     
     
     再那个帖子里我回答了如何彻底的杀死开始菜单,遗憾的是我不知道如何重新打开,实际上我觉得应该采用全局hook,如果不允许运行其他程序,我觉得必须做到
    1)禁止开始菜单
    2)禁止ctrl+alt+del,因为xp,2k能够用taskmgr.exe运行程序
    3)禁止alt+tab
    4)窗体全屏而且总在最前而且不能最小化不能移动
    ...
    。  
     
    Top 
     
     回复人: suntt(两条腿的狗) ( ) 信誉:100  2003-2-28 7:38:24  得分:0 
     
     
     up一下  
     
    Top 
     
     回复人: jeewin() ( ) 信誉:100  2003-2-28 13:26:51  得分:0 
     
     
     程序运行初始化时设置注册表里相应的值屏蔽那些功能,退出程序时再清除设置。不知行不行,注册表里有一项可以禁止所有程序,但我忘了具体在哪了。
    纯属个人意见:)  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 20:44:37  得分:0 
     
     
     请问:如何彻底的杀死开始菜单?  
     
    Top 
     
     回复人: jennyvenus() ( ) 信誉:101  2003-2-28 20:49:56  得分:0 
     
     
     '这个程序能够完全禁止开始菜单,而且能够恢复开始菜单,ctrl+esc和win键都不管用,但是在xp,2k下还是能够通过taskmgr.exe(任务管理器)运行新的程序,所以还要禁止ctrl+alt+del。Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Dim task As Long
    Dim win As Long
    Dim bswap As BooleanPrivate Sub Command1_Click()
        If Not bswap Then
            SetParent win, Me.hwnd
            ShowWindow win, 0
        Else
            SetParent win, task
            ShowWindow win, 1
        End If
        bswap = Not bswap
    End SubPrivate Sub Form_Load()
        task = FindWindow("Shell_TrayWnd", vbNullString)
        If task Then
            win = FindWindowEx(task, 0, "Button", vbNullString)
            If win Then
            Else
                MsgBox "没有找到开始按钮"
                Unload Me
            End If
        Else
            MsgBox "没有找到任务栏"
            Unload Me
        End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        If bswap Then
            SetParent win, task
            ShowWindow win, 1
        End If
    End Sub
      
     
    Top 
     
     回复人: Girl1983(长发女生) ( ) 信誉:93  2003-2-28 20:54:43  得分:0 
     
     
     有一个外国人做的DLL很好用,禁止了一切。  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 21:17:33  得分:0 
     
     
     在哪里可以,或者叫什么名字?  
     
    Top 
     
     回复人: tiger322(tiger322) ( ) 信誉:100  2003-2-28 21:20:06  得分:0 
     
     
     在哪里可以下载这个DLL?  
     
    Top 
     
     回复人: dingyanwei() ( ) 信誉:100  2003-03-02 19:22:00  得分:0 
     
     
     Attribute VB_Name = "DisableCtrlAltDelM"
    '屏蔽Windows快捷键和热启动
    'dyw
    '2002.10.30'DisableCtrlAltDel(Boolean)' Used for DisableCtrlAltDelete
    Private Const SPI_SETDESKWALLPAPER = 20&
    Private Const SPIF_UPDATEINIFILE = 0
    Private Const SPIF_SENDWININICHANGE = 2
    Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function SystemParametersInfo Lib _
    "user32" Alias "SystemParametersInfoA" (ByVal uAction _
    As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
    ByVal fuWinIni As Long) As Long
    Public Sub DisableCtrlAltDel(bDisabled As Boolean)
        ' 禁止或恢复Ctrl+Alt+Del键和Ctrl+Esc键的使用
        Dim x As Long
        x = SystemParametersInfo(97, bDisabled, CStr(1), 0)End Sub
      
     
    Top 
     
     回复人: jennyvenus() ( ) 信誉:101  2003-03-02 21:28:00  得分:0 
     
     
     dingyanwei的程序只能在98,me下有效,在2k,xp下无效,有的人说修改注册表能够实现,但是我照例操作就不管用。
      
     
    Top 
     
     回复人: FUNDGIRL(阿弥陀佛) ( ) 信誉:100  2003-03-10 08:57:00  得分:0 
     
     
     开始菜单就是一个类名为"basebar",标题为空的窗体
    只要用Findwindow查找一个类名为"basebar"标题为空的窗体再向它发送WM_close消息就行了sendmessage findwinodw ("basebar",""),&h10,0,0
    就搞定了!
    API声明自己加把自己的窗体提前只要先把窗体的位置提到最顶,再设置一个计时器,不停的激活自身这个窗体就行了!好像激活窗体VB里有自带函数。activewindow吧?
      
     
      

  3.   

    禁用Windows键:    在Windows增强键盘中,CTRL和ALT之间新增了一个很有用的Windows键,由它构成的组合键提供了许多多元化的命令操作模式。不过,如果你真的不喜欢它,也可以使用以下方法使Windows键失效。
        1、打开注册表编辑器。
        2、打开下面所示位置。在右侧新建一个“二进制值”,键名为"Scancode Map",将其值设为"00 00 00 00 00 00 00 00 03 00 00 00 00 00 5B E0 00 00 5C E0 00 00 00 00"。
        3、重新启动计算机。位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout支持的操作系统: NT  2000  禁止使用任务管理器:    在Windows NT/2000/XP系统下,任何用户都可以通过任务管理器查看当前系统的状况,包括CPU、内存使用情况和当前系统中的进程。可以通过注册表禁止非管理员用户使用任务管理器。操作步骤如下:
        1、打开注册表编辑器。
        2、打开下面所示位置。在右侧窗口中新建DWORD值,命名为"DisableTaskMgr",将数值设为"1"。
        3、无需重新启动即可生效。再使用CTRL+ALT+DEL调用任务管理器时,会出现禁用消息框。位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System支持的操作系统: NT  2000  XP  
    知道改注册表的哪里了,用VB改一下就OK了,在9x下禁用Ctrl+Alt+Del的方法到处都有。