使用win32监视Windows任务栏状态更改



环境:

Windows 7

Visual Studio(2008)C++(无.NET)

短暂而甜蜜的目标:

确保Windows任务栏永远不可见。

详细信息:

我希望能够注册Window的事件ABN_STATECHANGE,如果该事件被触发,则禁用并隐藏任务栏。

我可以很容易地完成后者:

CWnd *Wnd;
Wnd = CWnd::FindWindow("Shell_TrayWnd", NULL);
Wnd -> ShowWindow(SW_HIDE);
Wnd -> EnableWindow(false);

但是,我不知道如何使用win32捕获任务栏状态更改事件。注意--我不能使用.NET框架。我应该通过CALLBACK WindowProc执行此操作吗?我真的不知道从哪里开始。

如有任何帮助,我们将不胜感激。

此通知将发送到appbars。您可以通过使用ABM_NEW选项调用SHAppBarMessage来注册为一体。

有许多工具可以用来替换windows shell。您也许能够弄清楚这些应用程序是如何工作的
您可以在此处看到替代窗口外壳的列表。

据我所见,他们用自己的可执行文件替换explorer.exe
您可以在启动应用程序时终止explorer.exe,然后在应用程序退出后恢复它。

此外,你可以在应用程序中放置一个监视器,监视explorer.exe的启动并杀死它,从而锁定更多精明的用户。你必须处理其他安全漏洞,例如访问TaskManager或命令提示符。

这是一种危险的方法,如果您的应用程序崩溃,系统可能会变得不可用,并且可能需要硬电源循环才能恢复。

或者您可以将应用程序设置为全屏应用程序,并使其锁定alt选项卡和windows键等功能。只需将主窗口的WindowState设置为最大化,TopMost设置为true,WindowStyle设置为none,就可以实现这一点。然后在低级别处理按键。这将覆盖您的windows任务栏,并阻止用户在退出应用程序之前访问它。

最新更新