Programas em execução
01/05/2003
0
eu preciso de uma função que retorne o caption do programa q foi aberto. Explicando: Na hora em que o usuário abrir a calculador o meu programa vai saber que a calculadora está aberta. Como eu faço isso?
Orlando Frade
Posts
01/05/2003
Spy
Se vc quiser vc pode adaptar pra pegar o nome de uma soh janela se quiser em um label. Da uma olhadinha ai na funcao. Desde jah, espero ter ajudado. []´s e té+.
function EnumWindowsProc(Wnd : HWnd;Form : TForm1) : Boolean; Export; {$ifdef Win32} StdCall; {$endif}
var
Buffer : Array[0..99] of char;
begin
GetWindowText(Wnd,Buffer,100);
if StrLen(Buffer) <> 0 then
Form.ListBox1.Items.Add(StrPas(Buffer));
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc,LongInt(Self));
end;
01/05/2003
Orlando Frade
A função resolve parte do meu problema, ela é muito boa pois lista todas as aplicações, mas ela só lista depois que eu clico no botão.
Eu quero que ela atualize as aplicações no listbox assim que eu abra uma nova aplicação e não quando eu clique no botão
01/05/2003
Spy
A função resolve parte do meu problema, ela é muito boa pois lista todas as aplicações, mas ela só lista depois que eu clico no botão.
Eu quero que ela atualize as aplicações no listbox assim que eu abra uma nova aplicação e não quando eu clique no botão[/quote:a91e835882]
Sem problema Orlando, ao invés de colocar em um button, basta voce colocar um timer com interval em 100 e no evento OnTimer vc coloca a chamada da funcao: EnumWindows(@EnumWindowsProc,LongInt(Self));
Té+
01/05/2003
Orlando Frade
A função resolve parte do meu problema, ela é muito boa pois lista todas as aplicações, mas ela só lista depois que eu clico no botão.
Eu quero que ela atualize as aplicações no listbox assim que eu abra uma nova aplicação e não quando eu clique no botão[/quote:97cf3b7768]
Sem problema Orlando, ao invés de colocar em um button, basta voce colocar um timer com interval em 100 e no evento OnTimer vc coloca a chamada da funcao: EnumWindows(@EnumWindowsProc,LongInt(Self));
Té+[/quote:97cf3b7768]
Era isso que eu tinha em mente só eu não queria usar esse componente, mas já vi que vou ter.
Valeu pela dica.
01/05/2003
Spy
Qndo seu programa fica em segundo plano e tem que capturar informacoes de outros, nao tem como, tem que usar um timer, pra ele rodar de tempo em tempo tal funcao e pegar a informacao.
O ruim eh q ele fica um tanto quanto pesado, pois fica sendo executado toda hora akela rotina do timer, se quiser deixa-lo um poko + leve vc pode fazer alguma funcao pra deixar o timer.enable:=false; quando vc nao precisar de tal informacao, e em enable:=true; qndo precisar, isso poupa um pouko do trabalho do processador. :wink:
:arrow: []´s e Té+
02/05/2003
Orlando Frade
Gostei da sugestão. Mais uma vez valeu.
Clique aqui para fazer login e interagir na Comunidade :)