当前位置: 源码素材网 » VC++教程 » 详情页

VC++ 屏蔽系统热键和隐藏任务栏

  •   时间:2019-06-11
  • 概述:屏蔽热键 隐藏任务栏

这个VC++代码实例将实现屏蔽上述系统热键并隐藏任务栏的功能。系统热键包括Alt+Tab、Ctrl+Alt+Del、Ctrl+Esc 等功能键,Alt+Tab 用于在正在运行的应用程序间切换,Ctrl+Alt+Del 用于关闭系统运行的程序,Ctrl+Esc 模拟单击系统的开始菜单。有时候,不能让用户在应用程序间进行切换,也不能让用户启动开始菜单,同时也不能显示任务栏,这时就需要应用程序隐藏系统热键和任务栏。实现方法:

运用3 个API 函数可实现本例功能,它们分别是SystemParametersInfo、ShowWindow 和FindWindow函数。函数SystemParametersInfo 用于获取或设置系统级别的参数,在设置参数的同时可以更新用户的配置信息,其原型如下:

BOOL SystemParametersInfo(
UINT uiAction, // 要获取或设置系统参数
UINT uiParam, // 与uiAction 取值有关
PVOID pvParam, // 与uiAction 取值有关
UINT fWinIni // 更新用户的配置信息标识
);

程序中通过调用SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,&temp,0)函数,向系统发送屏幕保护程序正在运行的信息,从而欺骗系统,达到屏蔽系统热键的目的。Windows 中的任务栏其实也是一个窗口,其窗口类名为“Shell_TrayWnd”。因此,只要找到这个窗口的句柄,并使窗口隐藏就可以达到隐藏任务栏的目的。本例就是通过FindWindow 函数找到这个窗口句柄,并通过ShowWindow 函数将其隐藏的。程序代码:
(1)新建一个基于对话框的项目Disable。编辑主对话框资源,设计完成后的屏蔽系统热键和任务栏对话框界面。
(2)在对话框类CDisableDlg 中添加【屏蔽系统热键】按钮单击事件的处理函数OnButton1,其中调用SystemParametersInfo 函数,将系统设置为“正在运行屏幕保护程序”状态,从而欺骗系统达到屏蔽系统热键的目的。代码如下:

void CDisableDlg::OnButton1()
{
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,1,NULL,0);
}

(3)在对话框类CDisableDlg 中添加【恢复系统热键】按钮单击事件的处理函数OnButton2,调用SystemParametersInfo 函数去除系统设置中的屏幕保护程序运行状态,从而恢复系统热键的功能。代码如下:

void CDisableDlg::OnButton2()
{
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,0,NULL,0);
}

(4)在对话框类CDisableDlg 中添加【屏蔽任务栏】按钮单击事件的处理函数OnButton3,隐藏任务栏。代码如下:

void CDisableDlg::OnButton3()
{
::ShowWindow(::FindWindow("Shell_TrayWnd",NULL), SW_HIDE);
}

(5)在对话框类CDisableDlg 中添加【恢复任务栏】按钮单击事件的处理函数OnButton4,显示任务栏。代码如下:

void CDisableDlg::OnButton4()
{
::ShowWindow(::FindWindow("Shell_TrayWnd",NULL), SW_SHOW);
}

    相关声明:

      若“VC++ 屏蔽系统热键和隐藏任务栏”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。