Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
jaketa

Fechar Programa

Recommended Posts

Tipo...

Eu estava querendo fazer um programinha bem simples pra ele fechar determinado programa em um determinado tempo...

Por exemplo fechar o winamp em 1h...

Tipo... gostaria de saber se tem algum comando pra poder fechar outro aplicativo...

t+..

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
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...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Leandro Teixeira

Uma maneira de você conseguir isto é listando os processos do computador, tem um Tópico neste forum que consta esta rotina...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×