【发布时间】:2011-06-23 20:54:27
【问题描述】:
在 Windows XP 上,可以使用以下代码禁用“开始”按钮:
hTray = FindWindow (TEXT("Shell_TrayWnd"), NULL);
if (hTray)
{
hStartButton = FindWindowEx(hTray, NULL, TEXT("Button"), NULL);
if (hStartButton) ShowWindow(hStartButton, FALSE);
}
对于公共访问计算机配置,我需要能够在 Windows 7 上执行此操作。必须禁用“开始”按钮(不仅仅是隐藏),并且任务栏的其余部分必须仍然可见且可用。隐藏任务栏和“开始”按钮不是一种选择。全屏运行不是一种选择。使用“Start Killer”将不起作用,因为它实际上并没有禁用“开始”按钮,只是将其隐藏(用户仍然可以使用热键拉出“开始”菜单)。
我已经尝试过使用FindWindowEx 和0xC017 作为其第三个参数的方法,然后尝试禁用该窗口。它不起作用。该方法仅在首先禁用整个任务栏时才有效。我需要的是一种仅禁用“开始”菜单的方法,就像我在上面复制的代码在 XP 中所做的那样。
非常感谢任何帮助。
【问题讨论】:
-
通常组策略对象是解决此类问题的正确解决方案。
-
没有组策略设置可以完全禁用“开始”按钮。
-
您想运行自助服务终端应用程序吗?那你为什么要运行 explorer shell。你应该让 Windows 运行你自己的 shell,这样你就不会面对这些垃圾了。
标签: c winapi windows-7 startmenu taskbar