Programas em execução

01/05/2003

0

Pessoal,
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

Orlando Frade

Responder

Posts

01/05/2003

Spy

Oi Orlando, pra vc pegar o nome de todas as janelas abertas eu usei a funcao da API EnumWindows, eu listei as janelas abertas em um listbox, mesmo o nome das janelas invisiveis sao listados.

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;


Responder

01/05/2003

Orlando Frade

Oi Orlando, pra vc pegar o nome de todas as janelas abertas eu usei a funcao da API EnumWindows, eu listei as janelas abertas em um listbox, mesmo o nome das janelas invisiveis sao listados. 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;


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


Responder

01/05/2003

Spy

[quote:a91e835882=´Orlando Frade´]
Oi Orlando, pra vc pegar o nome de todas as janelas abertas eu usei a funcao da API EnumWindows, eu listei as janelas abertas em um listbox, mesmo o nome das janelas invisiveis sao listados. 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;


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é+


Responder

01/05/2003

Orlando Frade

[quote:97cf3b7768=´Orlando Frade´][quote:97cf3b7768=´SPY´]Oi Orlando, pra vc pegar o nome de todas as janelas abertas eu usei a funcao da API EnumWindows, eu listei as janelas abertas em um listbox, mesmo o nome das janelas invisiveis sao listados. 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;


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.


Responder

01/05/2003

Spy

eheheh...realmente eh chato usar o timer nesses casos... ...mas eh o jeito neh. :D

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é+


Responder

02/05/2003

Orlando Frade

eheheh...realmente eh chato usar o timer nesses casos... ...mas eh o jeito neh. :D 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é+


Gostei da sugestão. Mais uma vez valeu.


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar