Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как убрать _видимую_ программу из taskbar


Автор: gAlexKo 13.3.2014, 11:31
Долго искал как убрать _видимую_ программу из taskbar, но все напрасно. Много чего предлагают, но либо  программа не исчезает из taskbar, либо исчезает становясь вообще невидимой. Огромная просьба описать проверенный метод работающий на Windows XP. У меня CBulder 6.

Упрощенная задача: Делаем новую программу "часы". В ней единственная строка Caption = "test";
Нужно что-то добавить, чтобы форма была видна на десктопе, но исчезла бы из панели задач.
По моему единственный способ это зарегестрировать  программу как сервис (в старом win95 была доступна функция RegisterServiceProcess из KERNEL32.DLL, но сейчас этой возможности нет). 

Что скажут гуру?

Автор: gAlexKo 13.3.2014, 13:30
Вышел из положения написав изврат в виде обработчика особого таймера который срабатывает при запуске программы один раз:

void __fastcall Tblf::special_hide_timerTimer(TObject *Sender)
{
   ShowWindow(Application->Handle, SW_HIDE) ;
   SetWindowLong(Application->Handle, GWL_EXSTYLE, GetWindowLong(Application->Handle, WS_EX_TOOLWINDOW)) ;
   special_hide_timer->Enabled = false;
}
//---------------------------------------------------------------------------

Если кто будет говорить, что такое работает в CreateForm - плюньте ему в глаза. ;-)

Автор: gAlexKo 14.3.2014, 11:02
А вот, такое прокатывает:

void __fastcall Tblf::FormShow(TObject *Sender)
{
   ShowWindow(Application->Handle, SW_HIDE) ;
   SetWindowLong(Application->Handle, GWL_EXSTYLE, GetWindowLong(Application->Handle, WS_EX_TOOLWINDOW)) ;

}
//---------------------------------------------------------------------------

Автор: gAlexKo 14.3.2014, 14:26
А бывает и такое - если в проекте задействованы dll с VCL компонентами, то при установленной галке "Build with run time packages" программа из taskbar (указанным выше методом) все равно не убирается. Выход - компилировать прогу со снятой галкой. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)