Exibir prg apenas no icon tray
Bom dia,
Alguém sabe como faço para fazer com que o programa apareça apenas no icon tray.
Já arrumei um componente que faz um icone aparecer do lado do relógio, e tb configurei o form para não exibir na barra de tarefas.
Mas quando minimizo o programa ele fica aparecendo minimizado em cima do botão iniciar.
Estou usando o seguinte procedimento para esconder o aplicativo.
procedure TForm1.FormCreate(Sender: TObject);
type
TRegisterServiceProcess = function (dwProcessID, dwType:DWord) : DWORD; stdcall;
var
Handle: THandle;
RegisterServiceProcess: TRegisterServiceProcess;
begin
//*** Nao aparece no Ctr+Alt+Del ***********************************************
Handle := LoadLibrary(´KERNEL32.DLL´);
RegisterServiceProcess := GetProcAddress(Handle, ´RegisterServiceProcess´);
RegisterServiceProcess(GetCurrentProcessID, 1);
FreeLibrary(Handle);
//*** Nao aparece na barra ***********************************************
SetWindowLong(Application.Handle, GWL_EXSTYLE,GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;
Grato,
Alguém sabe como faço para fazer com que o programa apareça apenas no icon tray.
Já arrumei um componente que faz um icone aparecer do lado do relógio, e tb configurei o form para não exibir na barra de tarefas.
Mas quando minimizo o programa ele fica aparecendo minimizado em cima do botão iniciar.
Estou usando o seguinte procedimento para esconder o aplicativo.
procedure TForm1.FormCreate(Sender: TObject);
type
TRegisterServiceProcess = function (dwProcessID, dwType:DWord) : DWORD; stdcall;
var
Handle: THandle;
RegisterServiceProcess: TRegisterServiceProcess;
begin
//*** Nao aparece no Ctr+Alt+Del ***********************************************
Handle := LoadLibrary(´KERNEL32.DLL´);
RegisterServiceProcess := GetProcAddress(Handle, ´RegisterServiceProcess´);
RegisterServiceProcess(GetCurrentProcessID, 1);
FreeLibrary(Handle);
//*** Nao aparece na barra ***********************************************
SetWindowLong(Application.Handle, GWL_EXSTYLE,GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;
Grato,
Denis
Curtidas 0
Respostas
Paulo_amorim
27/01/2004
Olá
na Unit da aplicaçao, antes do Application.CreateForm coloca
Application.Showmainform := False;
na Unit da aplicaçao, antes do Application.CreateForm coloca
Application.Showmainform := False;
GOSTEI 0
Denis
27/01/2004
Valeu !!!!!!
Poxa ! O negócio era mais simples do que eu imaginava ....
Poxa ! O negócio era mais simples do que eu imaginava ....
GOSTEI 0
Paulo_amorim
27/01/2004
Olá
De fato, eh bem simples
Na verdade eu nao uso esse componente que vc disse usar...eu achei outra forma tambem!
Ou seja, existem varios meios...
Até+
De fato, eh bem simples
Na verdade eu nao uso esse componente que vc disse usar...eu achei outra forma tambem!
Ou seja, existem varios meios...
Até+
GOSTEI 0
Elias Jr
27/01/2004
Olá
De fato, eh bem simples
Na verdade eu nao uso esse componente que vc disse usar...eu achei outra forma tambem!
Ou seja, existem varios meios...
Até+
Você poderia me mostrar essa forma? Muito obrigado.
GOSTEI 0
Denis
27/01/2004
Olá
Se for o componente que usei para criar um ícone da aplicação, o mesmo pode ser baixado no site [url]http://www.delphi.eti.br[/url]
Lá tem um componente para o ícone. Ou tb pode usar a tradicional rxlib.
Denis[/url]
Se for o componente que usei para criar um ícone da aplicação, o mesmo pode ser baixado no site [url]http://www.delphi.eti.br[/url]
Lá tem um componente para o ícone. Ou tb pode usar a tradicional rxlib.
Denis[/url]
GOSTEI 0
Paulo_amorim
27/01/2004
[quote:10eded2953=´Elias Jr´]
Você poderia me mostrar essa forma? Muito obrigado.[/quote:10eded2953]
Olá
Eu fiz um modelinho simples, que soh mostra e esconde quando clica no Tray...a partir dai vai da sua criatividade...
dois pontos importantes:
Incluir na USES o ShellAPI...
Na Unit da aplicaçao, colocar o SHowMainFOrm False, senao ele aparece...
aqui vai:
Espero que ajude
Até+
Olá
De fato, eh bem simples
Na verdade eu nao uso esse componente que vc disse usar...eu achei outra forma tambem!
Ou seja, existem varios meios...
Até+
Você poderia me mostrar essa forma? Muito obrigado.[/quote:10eded2953]
Olá
Eu fiz um modelinho simples, que soh mostra e esconde quando clica no Tray...a partir dai vai da sua criatividade...
dois pontos importantes:
Incluir na USES o ShellAPI...
Na Unit da aplicaçao, colocar o SHowMainFOrm False, senao ele aparece...
aqui vai:
unit UPrincipal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ShellAPI;
const
WM_ICONTRAY = WM_USER + 1;
type
TFPrincipal = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
procedure FormClick(Sender: TObject);
private
TrayIconData: TNotifyIconData;
{ Private declarations }
public
{ Public declarations }
end;
var
FPrincipal: TFPrincipal;
implementation
{$R *.DFM}
procedure TFPrincipal.FormCreate(Sender: TObject);
begin
//Define as propriedades do ícone
with TrayIconData do
begin
cbSize := SizeOf(TrayIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
//Cria o ícone no win system tray
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
end;
//Tira o ícone do win system tray
procedure TFPrincipal.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;
//Procedimento para mostrar/esconder a aplicação
procedure TFPrincipal.TrayMessage(var Msg: TMessage);
begin
case Msg.lParam of
//Clique duplo do o mouse para exibir
WM_LBUTTONDBLCLK:
begin
FPrincipal.Show;
end;
//Clicar com o botão direito para esconder
WM_RBUTTONDOWN:
begin
FPrincipal.Hide;
end;
end;
end;
//Esconde a aplicação quando se clica nela
procedure TFPrincipal.FormClick(Sender: TObject);
begin
FPrincipal.Hide;
end;
end.
Espero que ajude
Até+
GOSTEI 0
Eniorm
27/01/2004
ressucitando o post eheh......
sobre o systray, usei o RXLib RXSysTray e funciona perfeito, estou montando um esquema assim:
qdo o aplicativo é minimizado, ele mostra no systray, e esconte o iconedo do systray qdo for restaurado, até ai tudo bem
mas como fazer q quanto minimizado, desaparecer o nome da barra de tarefas, e aparecer novamente qdo restaurado???? Tipo isso ocorre com o FlashGet e outros.
Abraços,
sobre o systray, usei o RXLib RXSysTray e funciona perfeito, estou montando um esquema assim:
qdo o aplicativo é minimizado, ele mostra no systray, e esconte o iconedo do systray qdo for restaurado, até ai tudo bem
mas como fazer q quanto minimizado, desaparecer o nome da barra de tarefas, e aparecer novamente qdo restaurado???? Tipo isso ocorre com o FlashGet e outros.
Abraços,
GOSTEI 0
Eniorm
27/01/2004
(sobe)
GOSTEI 0
Marco Salles
27/01/2004
ressucitando o post eheh......
é verdade... :lol:
Mas executando a dica do Paulo amorim , o executavel simplismente Some.. Não aparece em lugar nenhum Na barra de tarefas :cry: :cry: :cry:
Eu Estava esperando que ele aparecesse em forma de icone na barra de tarefas :cry: :cry: :cry:
O que posso estar fazendo de errado :oops: :oops: :oops: :oops:
GOSTEI 0
Netosdr
27/01/2004
Olá na Unit da aplicaçao, antes do Application.CreateForm coloca Application.Showmainform := False;
Só para complementar a dica do colega Paulo, essa propriedade funciona quando a propriedade Visible do Form Principal está setada para False.
Abraço!
GOSTEI 0