Blackleaf Postado Maio 21, 2008 Denunciar Share Postado Maio 21, 2008 Eu queria saber como faço para quando um programa 'x.exe' fechar aconteça uma coisaEx: fecho 'x.exe' e o meu programa automaticamente abrirá uma messagem 'programa x foi fechado'Como faço isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 21, 2008 Denunciar Share Postado Maio 21, 2008 Ex: fecho 'x.exe' e o meu programa automaticamente abrirá uma messagem 'programa x foi fechado'Voce quer fechar um outro programa pelo seu programa principal ? e este outro programa estaria rodando junto com o seu ?com mais detalhes fica mais facil te responder.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 21, 2008 Autor Denunciar Share Postado Maio 21, 2008 Eu quero que quando um programa ( independente do meu ) for fechado apareça uma mensagem.O meu programa só vai detectar o feichamento do programa x e informar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 23, 2008 Autor Denunciar Share Postado Maio 23, 2008 aff, ninguém vai responder não ?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Maio 23, 2008 Denunciar Share Postado Maio 23, 2008 aff, ninguém vai responder não ??Isto pode ser considerado uma ofensa (:Se ninguém respondeu, talvez seja pelo fato de que ninguém sabe...O que voce pode fazer é algum método, para por exemplo... checar se o processo está rodandofunction processExists(exeFileName: string): Boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin Result := True; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end;Deixando um timer por exemplo verificando, e se o processo não estiver mais rodando vai retornar Falseagora, o programa que voce quer saber se fechou é executado pelo seu programa? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 23, 2008 Autor Denunciar Share Postado Maio 23, 2008 Desculpa aí Churc ;)O programa q eu quero q detecte é independente.E me explica direito o que eu tenho q fazer para quando meu programa detectar o outro programa exiba uma mensagem Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 24, 2008 Denunciar Share Postado Maio 24, 2008 O programa q eu quero q detecte é independente.E me explica direito o que eu tenho q fazer para quando meu programa detectar o outro programa exiba uma mensagemSeu programa tera que listar todos os processos que estão rodando no windows e fazer uma verificação de tempos e tempos se algum processo deixou de ser executado. Neste caso voce pode comparar a lista de processos atual com uma de amostra para saber qual deles foi parado e exibir uma mensagem e novamente atualizar a lista.Complementando o post do ChurcVeja alguns destes posts sobre Finalizar Processos do windows, acho que vai encontrar o que precisahttp://scriptbrasil.com.br/forum/index.php...p;highlite=killabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 24, 2008 Autor Denunciar Share Postado Maio 24, 2008 Desculpe Jhonas mas eu não achei nada nesse link que podesse tirar minha dúvida :( Mas me explica uma coisa:Quando eu botar aquele comando no meu programa ele vai ficar procurando para ver s o processo q eu quero está rodando de tempos em tempos?E eu apenas tenho q substituir o nome 'ExeFileName' pelo nome do processo q eu quero?E se detectar o fechamento, como eu posso fazer q algum 'evento' aconteça? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 25, 2008 Denunciar Share Postado Maio 25, 2008 Desculpe Jhonas mas eu não achei nada nesse link que podesse tirar minha dúvida Procure com calma que voce vai acharQuando eu botar aquele comando no meu programa ele vai ficar procurando para ver s o processo q eu quero está rodando de tempos em tempos?E eu apenas tenho q substituir o nome 'ExeFileName' pelo nome do processo q eu quero?E se detectar o fechamento, como eu posso fazer q algum 'evento' aconteça?Voce montara uma rotina dentro de um timer que será executado a cada x segundos, coparando a lista atual com a lista de amostra... ( por exemplo um listbox ) nesta comparação o processo que não mais estiver rodando será mostrado em um showmessage ou num MessageDlg.Saber Pesquisar tambem faz parte do aprendizado.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 25, 2008 Autor Denunciar Share Postado Maio 25, 2008 Quando tento fazer isso dá um monte de erroseu botei esse código na source do programa e deu um monte de errosme ajudem plz @_@ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 25, 2008 Denunciar Share Postado Maio 25, 2008 Quando tento fazer isso dá um monte de erroseu botei esse código na source do programa e deu um monte de errosqual é a versão do Delphi qu está usando ? qual o seu nivel de conhecimento na linguagem ? qual a lógica que voce esta usando para conseguir resolver o problema ?o que voce já codificou ?quais os erros que está encontrando ? qual a finalidade deste programa ? abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Blackleaf Postado Maio 26, 2008 Autor Denunciar Share Postado Maio 26, 2008 Quando tento fazer isso dá um monte de erroseu botei esse código na source do programa e deu um monte de errosqual é a versão do Delphi que está usando ? Delphi 7qual o seu nivel de conhecimento na linguagem ? Baixo - Ainda não faço programas sozinho, preciso de tutos, mas sempre evito o copiar e colar, e tento enteder a lógica do código.qual a lógica que voce esta usando para conseguir resolver o problema ?Tentei substituir os nomes q acho q tem q subsituir, tentei entender como funciona analisando o código.o que voce já codificou ? :wacko: Não sei muito o q é isso :wacko: mas acho q é isso:já vi q ali tem um loop eterno, e q vai tipo 'tirando imagens dos programas executados', mas q na verdade está "gravando".quais os erros que está encontrando ? Erro no 'TProcessEntry32;'e alguns outros decorrentes dessequal a finalidade deste programa ? Pretendo montar um bypass para um forum, bem funcional ;)abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 26, 2008 Denunciar Share Postado Maio 26, 2008 quais os erros que está encontrando ? Erro no 'TProcessEntry32;'e alguns outros decorrentes desseFaltou voce definir o uses TLHelp32;qual o seu nivel de conhecimento na linguagem ? Baixo - Ainda não faço programas sozinho, preciso de tutos, mas sempre evito o copiar e colar, e tento enteder a lógica do código.Tentei substituir os nomes q acho q tem q subsituir, tentei entender como funciona analisando o código.Eu até poderia te passar uma solução pronta, mas o que voce aprenderia ? Então vou te propor um exercicio de raciocínio ... vou te dar parte da solução e vamos ver como voce se sai...ok ?Qual a lógica ou raciocínio para obter o resultado esperado para este problema:1 - o que eu quero: elaborar um programa que liste os processos em andamento no windows, faça uma comparação de tempos em tempos com uma lista de amostra dos mesmos processos x segundos atraz, e caso o processo tenha parado mostrar o nome do processo e atualizar a lista de amostra. 2 - o que eu preciso:a) uma rotina para listar todos os processosB) fazer uma copia desta lista para servir de amostra c) uma rotina de tempo para comparar as duas listasd) mostrar o nome do processo parado e atualizar novamente a lista de amostra3 - que componentes usar:a) um FormB) dois listviewc) um bitbtnd) um timer-----------------------------------------------------------Para começar vou te dar o endereço de uma rotina para listar os processos do windowshttp://www.swissdelphicenter.ch/torry/showcode.php?id=593Desta maneira vou te ensinar a pensar sobre o problema e como chegar na solução.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Blackleaf
Eu queria saber como faço para quando um programa 'x.exe' fechar aconteça uma coisa
Ex: fecho 'x.exe' e o meu programa automaticamente abrirá uma messagem 'programa x foi fechado'
Como faço isso?
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.