Ir para conteúdo
Fórum Script Brasil
  • 0

Ao programa s fechar


Blackleaf

Pergunta

12 respostass a esta questão

Posts Recomendados

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0
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á rodando

function 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 False

agora, o programa que voce quer saber se fechou é executado pelo seu programa?

Link para o comentário
Compartilhar em outros sites

  • 0
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

Seu 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 Churc

Veja alguns destes posts sobre Finalizar Processos do windows, acho que vai encontrar o que precisa

http://scriptbrasil.com.br/forum/index.php...p;highlite=kill

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe Jhonas mas eu não achei nada nesse link que podesse tirar minha dúvida

Procure com calma que voce vai achar

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?

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

Link para o comentário
Compartilhar em outros sites

  • 0
Quando tento fazer isso dá um monte de erros

eu botei esse código na source do programa e deu um monte de erros

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

Link para o comentário
Compartilhar em outros sites

  • 0
Quando tento fazer isso dá um monte de erros

eu botei esse código na source do programa e deu um monte de erros

qual é a versão do Delphi que está usando ?

Delphi 7

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.

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 desse

qual a finalidade deste programa ?

Pretendo montar um bypass para um forum, bem funcional ;)

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

quais os erros que está encontrando ?

Erro no 'TProcessEntry32;'

e alguns outros decorrentes desse

Faltou 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 processos

B) fazer uma copia desta lista para servir de amostra

c) uma rotina de tempo para comparar as duas listas

d) mostrar o nome do processo parado e atualizar novamente a lista de amostra

3 - que componentes usar:

a) um Form

B) dois listview

c) um bitbtn

d) um timer

-----------------------------------------------------------

Para começar vou te dar o endereço de uma rotina para listar os processos do windows

http://www.swissdelphicenter.ch/torry/showcode.php?id=593

Desta maneira vou te ensinar a pensar sobre o problema e como chegar na solução.

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...