Tirando a aplicação da barra de tarefas no Delphi 2007 ou mais novo
Categoria(s): (Nerd) por Naftali em 22-09-2008
Tags : Coding, Delphi, Delphi 2009, Object Pascal
Olá pessoal, ultimamente estive trabalhando em um projeto novo que, por fim, resolvi desenvolver na versão mais nova do Delphi. Até o fim estava dando tudo certo, até que precisei fazer uma coisa: Tirar a aplicação da barra de tarefas.
Bom, até a versão 2006 do Delphi, essa era uma tarefa simples, bastava colocar o seguinte código no evento OnCreate:
ShowWindow(Application.Handle, SW_HIDE) ;
SetWindowLong(Application.Handle, GWL_EXSTYLE, getWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW) ;
ShowWindow(Application.Handle, SW_SHOW) ;
Pois bem, fui tentar fazer o mesmo e a aplicação continuava lá, quebrei a cabeça para descobrir o problema. Até que, navegando pela internet, descobri que a partir da versão 2007 do Delphi (e do C++ Builder), a Classe TApplication possui uma propriedade chamada MainFormOnTaskbar.
O que ela faz?
A princípio, essa propriedade tem o valor true, que significa que o botão na barra de tarefas representa o form principal, e leva consigo o título do mesmo. Mas, quando setada para false, ele representa uma janela escondida da aplicação e leva o título da aplicação e não do form. Essa janela escondida foi usada até a versão 2006 para gerenciar as janelas da aplicação, a partir da versão 2007 isso mudou. Por isso essa propriedade existe, ou seja, para manter compatibilidade com projetos desenvolvidos em versões antigas, tanto que, ao importar um projeto desenvolvido no Delphi 2006 ou menor, essa propriedade fica false.
Então, para poder ter o efeito desejado (que era sumir com a aplicação da barra de tarefas), é necessário mudar a propriedade para false (no arquivo .dpr, logo abaixo de Application.Initialize), e então colocar o seguinte código no evento OnShow e no OnActivate do form principal:
ShowWindow(Application.Handle, SW_HIDE);
E está feito, sua aplicação não mais aparecerá na barra.

