Попросил меня заказчик адаптировать мою старую программу под Windows 7. Ибо что для 2000/XP — хорошо, то для Windows 7 ни в какую.
Самые большие проблемы возникли с кнопкой Пуск, ведь как отключается панель задач чуть ли на заборах не написано. Естественно первым делом был задействован Google, который показал, что проблема кнопки Пуск в Windows 7 волнует многих.
Перепробовав кучу примеров включительно с размещенными на Хабре рабочих примеров так и не было найдено.
Зато я вспомнил о вещи которая мне пригодилась при создании прошлой версии программы — Spy++. Со Spy я обнаружил довольно любопытную штуку — окно с надписью «Пуск» не одно, а их — два. Собственно это — окно класса DV2ControlHost с надписью Меню «Пуск» и окно класса Button с надписью Пуск.

Попытки скрыть только одну из кнопок не приводили ровным счетом ни к чему и я совсем отчаялся но на всякий случай врубил сразу скрытие обоих (панель задач я скрывал постоянно).
Чудо таки произошло и кнопка была низвергнута к моей великой радости (в 4-е часа утра).

А вот и код на Delphi которым я воспользовался (на других языках будет практически идентично):
P.S.
Надеюсь собратьям по извращениям над интерфейсом Windows будет полезно.
Самые большие проблемы возникли с кнопкой Пуск, ведь как отключается панель задач чуть ли на заборах не написано. Естественно первым делом был задействован Google, который показал, что проблема кнопки Пуск в Windows 7 волнует многих.
Перепробовав кучу примеров включительно с размещенными на Хабре рабочих примеров так и не было найдено.
Зато я вспомнил о вещи которая мне пригодилась при создании прошлой версии программы — Spy++. Со Spy я обнаружил довольно любопытную штуку — окно с надписью «Пуск» не одно, а их — два. Собственно это — окно класса DV2ControlHost с надписью Меню «Пуск» и окно класса Button с надписью Пуск.

Попытки скрыть только одну из кнопок не приводили ровным счетом ни к чему и я совсем отчаялся но на всякий случай врубил сразу скрытие обоих (панель задач я скрывал постоянно).
Чудо таки произошло и кнопка была низвергнута к моей великой радости (в 4-е часа утра).

А вот и код на Delphi которым я воспользовался (на других языках будет практически идентично):
procedure hide;
begin
ShowWindow( FindWindow( 'Shell_TrayWnd', nil ), SW_HIDE); //прячем панель задач
ShowWindow( FindWindow( 'Button', 'Пуск' ), SW_HIDE); //прячем кнопку пуск аналогично как и в ХР
ShowWindow( FindWindow( 'DV2ControlHost', 'Меню "Пуск"' ), SW_HIDE); //... и еще раз прячем Пуск
end;
P.S.
Надеюсь собратьям по извращениям над интерфейсом Windows будет полезно.