Удалить приложение из панели задач с помощью оболочки C #? - PullRequest
1 голос
/ 28 января 2010

Есть ли способ создать оболочку C # для существующего приложения, которая позволит мне удалить ее с панели задач?

Дополнительная информация:

У меня есть приложение для таймера, которое я предполагаю использовать, но не потому, что оно хорошо ... отстой. Смотри https://superuser.com/questions/92774/quickbooks-timer-replacement-windows.

Так что, чтобы сделать его менее полным, мне интересно, смогу ли я создать оболочку, а не просто взаимодействовать с ней. Удаление таймера с панели задач, а затем скрытие / показ моего приложения будет шагом в этом направлении.

Другим вариантом является обратный инжиниринг таймера. Но это еще один проект на другой день. Прямо сейчас я был бы счастлив скрыть вещь.

1 Ответ

1 голос
/ 29 января 2010

Вам необходимо найти окно, представляемое на панели задач, и убрать бит «Показать на панели задач» из его (расширенного) стиля. Это будет связано с переходом на уровень Windows API. Вам понадобятся следующие функции:

  • GetWindowLongPtr - для извлечения существующего расширенного стиля (GWL_EXSTYLE)
  • SetWindowLongPtr - установить новый существующий расширенный стиль (GWL_EXSTYLE)

Бит расширенного стиля, который вам нужно удалить: WS_EX_APPWINDOW.

Пожалуйста, смотрите документацию SetWindowLongPtr для получения информации об ограничениях на использование SetWindowLongPtr для воздействия на окна в других потоках и, возможно, для вызова визуального обновления необходимо вызвать SetWindowPos. Windows может даже помешать вам сделать это вообще (например, из соображений безопасности или удобства использования)

Я не проверял это, и это может зависеть от целевого приложения. Наконец, если это сработает, оно полностью удалит окно с панели задач, что может сбить с толку при повторном отображении окна, поэтому ваше приложение может захотеть повторно включить стиль WS_EX_APPWINDOW перед отображением окна другого приложения.

...