Form sem receber focus
Bom dia pessoal, eu tenho uma aplicação que envia caracteres para outras aplicações por meio de mensagens.
Está tudo perfeito....mas tem uma coisa q eu quero fazer e não consigo...
Qdo eu clico no botão da minha aplicação para enviar um caracter, o meu form ganha focus e qdo ele envia o caracter a outra aplicação tbm ganha focus...e então fica essa troca d focus....o meu form está como fsStayOnTop....eu vi algumas aplicações q não tem esse problema...
Essas aplicações ficam sempre a frente das outras aplicações, mas qdo vc clica nelas, as mesma nunca ganham focus...
alguém sabe como eu posso fazer isso???
Estou usando o Delphi7
Mt obrigado a todos
Está tudo perfeito....mas tem uma coisa q eu quero fazer e não consigo...
Qdo eu clico no botão da minha aplicação para enviar um caracter, o meu form ganha focus e qdo ele envia o caracter a outra aplicação tbm ganha focus...e então fica essa troca d focus....o meu form está como fsStayOnTop....eu vi algumas aplicações q não tem esse problema...
Essas aplicações ficam sempre a frente das outras aplicações, mas qdo vc clica nelas, as mesma nunca ganham focus...
alguém sabe como eu posso fazer isso???
Estou usando o Delphi7
Mt obrigado a todos
Wdrocha
Curtidas 0
Respostas
Micheus
15/01/2009
Essas aplicações ficam sempre a frente das outras aplicações, mas qdo vc clica nelas, as mesma nunca ganham focus...
[b:236bd8c2f1]WDRocha[/b:236bd8c2f1], não lembro de ter visto algo assim (a aplicação ficar ativa sem ganhar o foco). Agora uma coisa que sei acontece, seria tendo sua aplicação uma tela principal e uma outra tela (esta tipo um teclado virtual - stay on top) se clicar em outra aplicação, a sua janela (stay on top) fica emcoberta, ou seja, ela fica apenas sobre todas as janelas da sua aplicação.
Então, em um caso destes, supondo que esta janela devesse ficar sobre todas as outras aplicações também, este efeito poderia ser obtido definindo como [i:236bd8c2f1]Parent[/i:236bd8c2f1] deste form o [i:236bd8c2f1]DeskTop[/i:236bd8c2f1]. Isto é feito usando a função da API SetParent (unit windows) e passando o handle do desktop que é obtido por outra função da API chamada [i:236bd8c2f1]GetDesktopWindow[/i:236bd8c2f1].
Tenho um exemplo disto neste link: [URL=http://www.4shared.com/file/80795590/72dd4299/Form_no_topo_de_todas_as_aplicacoes.html]Form no topo de todas as aplicacoes.zip[/URL]
GOSTEI 0
Wdrocha
15/01/2009
Boa tarde Micheus....
eu consegui fazer....
passei um email para o Nildo e ele me deu uma dica...ele me falow sobre a função CreateParams...
eu procurei um pouco e encontrei....
consegui...
é para ficar como o teclado virtual do Windows...se vc prestar atenção qdo vc clica em algum botão do mesmo...o focus do teclado continua na janela ativa....e o focus nunca vai para o teclado....
mt obrigado cara.....
fico grato pela ajuda....
vlw
eu consegui fazer....
passei um email para o Nildo e ele me deu uma dica...ele me falow sobre a função CreateParams...
eu procurei um pouco e encontrei....
consegui...
é para ficar como o teclado virtual do Windows...se vc prestar atenção qdo vc clica em algum botão do mesmo...o focus do teclado continua na janela ativa....e o focus nunca vai para o teclado....
mt obrigado cara.....
fico grato pela ajuda....
vlw
GOSTEI 0
Woinch
15/01/2009
Olá WDRocha, poderia postar o código para que os outros usuários possam ver também como funciona?
Achei muito interessante seu tópico.
Abraços.
Achei muito interessante seu tópico.
Abraços.
GOSTEI 0
Wdrocha
15/01/2009
Olá WDRocha, poderia postar o código para que os outros usuários possam ver também como funciona?
Achei muito interessante seu tópico.
Abraços.
Claro q sim....com esta função e com a função KEYBD_EVENT é possível fazer um teclado virtual...
type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
const
WS_EX_NOACTIVATE = $8000000;
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
Espero ter ajudado e ter contribuído para o conhecimento dos colegas..
qualquer coisa...eu dou um exemplo d como fazer isso..
flw..
GOSTEI 0
Woinch
15/01/2009
Fiz um teste aqui... Muito legal. Isso pode ser muito útil para diversas coisas.
Obrigado pela dica.
Obrigado pela dica.
GOSTEI 0
Wdrocha
15/01/2009
Blz...qdo vc tiver uma idéia legal...posta aew tbm... :-)
abraços...
abraços...
GOSTEI 0