Как отключить кнопку «Пуск» (но не панель задач) в Windows 7? - PullRequest
1 голос
/ 09 февраля 2011

В 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.

Любая помощь очень ценится.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011

«Правильная» версия для Windows 7 показана ниже:

HWND hStartBtn = FindWindowEx(NULL, NULL, MAKEINTATOM(0xC017), TEXT("Start"));
if (hStartBtn != NULL)
{
    ShowWindow(hStartBtn, FALSE);
}

Однако, это отключает только кнопку , то есть вы не получите свечения или других эффектов, если навести на них курсор мыши. Вы все еще можете щелкнуть область кнопки на панели задач, чтобы открыть меню. Очевидно, что обработчик щелчков теперь реализован в самом окне панели задач, а не как часть отдельной кнопки Пуск. Вот почему вы должны сначала отключить всю панель задач , и, следовательно, почему большинство решений, которые вы нашли в Интернете, делают именно это.

Однако, похоже, что «Start Killer» * Приложение 1015 * теперь имеет функции для отключения наиболее распространенных горячих клавиш, запускающих меню «Пуск», а именно Ctrl + Esc и клавиша Windows. Вы найдете эти опции, запустив программное обеспечение, щелкнув правой кнопкой мыши по его значку на панели задач и выбрав «Опции» в меню. Вы также можете отредактировать реестр, чтобы отключить ключ Windows, как описано в этой статье базы знаний . Если вы хотите реализовать эту же функцию самостоятельно с помощью кода, единственным решением будет низкоуровневая клавиатурная ловушка, которая перехватывает ответственные за нажатия клавиши и отбрасывает их.

Недокументированные хаки, подобные этому, предназначены для взлома с более новыми версиями Windows. Я представляю, что Раймонд Чен рассмеялся бы и сказал что-то вроде "Я тебе так сказал" . Взлом интерфейса Windows - дурацкое дело. Или, как вы говорите несколько раз в вопросе, «это не вариант».

0 голосов
/ 09 февраля 2011

Используйте одну из доступных групповых политик, перечисленных здесь .

Вы не упомянули , почему вы хотите отключить кнопку запуска. Если вы думаете о том, что именно вы не хотите делать от своих пользователей, вместо того, чтобы сообщать нам о выбранном вами решении (например, «отключить кнопку запуска»), вы можете придумать гораздо лучшее решение.

Например, если вы хотите запретить пользователям изменять определенные настройки, заблокируйте , что , а не кнопку запуска! Или, если вы не хотите, чтобы они видели все установленные приложения, спрячьте эти приложения вместо кнопки «Пуск»! Или ...

(надеюсь, вы понимаете мою точку зрения здесь).

0 голосов
/ 09 февраля 2011

Есть ли что-то особенное в меню Пуск, которое нужно отключить?Вы можете сделать то же самое через параметры политики или другие права доступа к файлам.

...