Ir ao conteúdo
  • Cadastre-se

Fechar Programa


jaketa

Posts recomendados

  • Membro VIP

O que você pode fazer é buscar a lista de nomes das janelas qeu estão rodando usando a função GetWindowList, jogar essa lista em um listbox (a função retorna um resulta TWindowList de onde você consegue retirar a lista de titulos das janelas).

Ai você selecionaria a janela que seja fechada, ajustaria o tempo e ao apertar um botão pra programar o fechamento da janela, você deveria criar ou usar um timer pronto para disparar o comando para fechar o número daquele processo.

seria algo mais ou menos assim:

  var procs: TWindowList;

procedure pegarlista;

var i: Integer;

begin

  procs:=nil;

  ListBox1.Items.Clear;

  procs:=GetWindowList;

  for i:=Low(procs) to High(procs) do

  begin

     ListBox1.Items.Add(procs.Title);

  end;

end;

procedure fechar(i: Integer);

var process: hWnd;

begin

    process:= OpenProcess(PROCESS_TERMINATE, False, procs.pid);

    TerminateProcess(process, 1);

end;

O indice I da função fechar é o item selecionado no listbox. O PID (Process ID ou identification) é um número que não muda. O Windows atribui ele a janela que permanece com ele até ela ser finalizada. Mas não sei qual erro que pode dar se for passado um PID que não existe mais (um processo já fechado), mas se você passar um PID de outro programa, será este que será fechado.

Vou fazer algo do tipo, pois vi um uso pra mim também.

Se eu terminar eu posto ele aqui.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Postado Originalmente por jaketa@02 mar 2004, 23:42

beleza...

Vou testar ele aqui...

Valeu...

Ixi, foi mal.

As funções que citei são da API do Windows mas não estão implementadas nas bibliotecas do Delphi.

Esqueci que eu uso porque tenho uma unit que faz todo o trabalho (faz tempo, foi feita para Delphi 4).

Só me toquei quando resolvi fazer. Dai fiquei com preguiça de voltar aqui e corrigir.

Fiz o programa rapidinho. Talvez uma melhorada no aspecto visual, mas já está funcionando bem, agendando quantos programas você quiser para fechar, multithread, etc.

pode baixar ele aqui com as fontes já:

http://www.cleberlr.hpg.com.br/fechaprogs.zip

Link para o comentário
Compartilhar em outros sites

Hmm.. valeu aí...

O seu programa ficou interessante...

Bem... vou tentar implementar o meu aqui com uma funcao q achei em uma busca q fiz... hehehe

PostMessage(FindWindow(nil, 'Calculadora'), WM_CLOSE,0,0);

aí... no lugar do "Calculadora"... você pode colocar o nome da janela q quiser fechar...

ou

PostMessage(FindWindow('scicalc', nil), WM_CLOSE,0,0);

aí no lugar de "scicalc" você coloca a classe do programa... q pode ser achada com o programa Winsight q vem com o delphi...

bem... achei essas dicas em www.linhadecodigo.com.br ... tem varias dicas interessantes la...

falou...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu vi um pequeno problema pra você fazer isso que você quer com o WinAmp.

Se você deixar pra ele ficar mudando o nome da janela (mostrando a música e o tempo), após algum tempo o nome da janela irá mudar. No meu ainda está configurado para rolar o nome.

Teria que fazer um caso especial para o WinAmp, a não ser que ele procure qualquer janela que tenha escrito 'WinAmp'.

No meu já funciona em qualquer caso porque eu capturo o PID dele.

Link para o comentário
Compartilhar em outros sites

é...

Eu percebi isso...

Mas como eu queria fazer um especifico pro winamp... aí eu fiz com o segundo codigo... onde coloquei a classe do programa... q é 'Winamp v1.x'... e deu certo...

Depois eu dou uma pesquisada melhor e tento fazer um q sirva pra qualquer programa... parecido com o seu...

falou...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...