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

Executável Se Comunicando Com Outro


Paulo Nobre

Pergunta

Tenho um programa que em um de seus menus chama um outro programa(exe)(digamos que o nome seja P2).

Na instalação dentro da pasta só aparece o executável principal.

Tudo está embutido num arquivo de recursos.

Na hora de clicar no menu que chama o P2 ele é descarregado dentro da pasta

do programa principal.

Porém depois de usá-lo gostaria de destrui-lo.

Como posso fazer isto?

Como o programa roda no tray e só é fechado com o windows, não estou conseguindo destruí-lo colocando DeleteFile(Caminho para p2) no close do principal.

A única coisa que estou fazendo para quebrar o galho é colocando o delete no oncreat, assim quando ele abre na nova inicialização do windows o program P2 é deletado do diretório principal.

Na realidade o que eu gostaria de fazer é o seguinte:

Ao fechar o P2, que neste momento se encontra no mesmo diretório do programa principal, pudesse colocar um código para apagá-lo do diretório principal, mas acho que não é possível.

Pensei também, mas não sei como fazer, em após o programa fechar, algum código verificar isto via um timer talvez e caso a janela estivesse fechada dar o comando deletefile.

O que vocês acham? É loucura da minha parte?

Não sei se vi isto aqui neste forum alguma vez, mas se não me engano tinha a ver com dlls. Gostaria de algo mais simples.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Sim, você poderia criar um segundo programa só para apagar o executável do primeiro e chamá-lo quando este fosse fechado. Através da função FindWindow teria como você saber se a janela do primeiro já foi fechada e daí apagar o executável; ou você poderia simplesmente estimar o tempo que o seu programa leva para ser fechado (coisa de segundos) e fazer com que o segundo esperasse o determinado tempo antes de apagar.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pela dica Graymalkin!!

A propósito onde está hospedado seu site.

Um dia desse tentei visitá-lo para ver se tinha alguma atualização ou novos programas e deu erro.

Abraços

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

  • 0

um método bom seria trabalhar usando api do windows, quando você xamar o p2 passe um parametro para ele, o HANDLE da app principal, ai quando você fechar o P2 mande uma mensagem para a aplicacao dizendo que fechou, e para ter mais controle, enviar via msg o handle do P2, se bem que deve ter algum metodo que quando você xame a app de para pegar o HANDLE, mais se usar com ShellExecute axo que terá que passar por mensagem mesmo ...

Link para o comentário
Compartilhar em outros sites

  • 0

tem uma funcao tmb, não testei ...

function ExecAndWait(const FileName, Params: string;
 const WindowState: Word): boolean;
var
 SUInfo: TStartupInfo;
 ProcInfo: TProcessInformation;
 CmdLine: string;
begin
 { Coloca o nome do arquivo entre aspas. Isto é necessário devido
   aos espaços contidos em nomes longos }
 CmdLine := '"' + Filename + '"' + Params;
 FillChar(SUInfo, SizeOf(SUInfo), #0);
 with SUInfo do  begin
   cb := SizeOf(SUInfo);
   dwFlags := STARTF_USESHOWWINDOW;
   wShowWindow := WindowState;
 end;
 Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,
   CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
   PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);

 { Aguarda até ser finalizado }
 if Result then begin
   WaitForSingleObject(ProcInfo.hProcess, INFINITE);
   { Libera os Handles }
   CloseHandle(ProcInfo.hProcess);
   CloseHandle(ProcInfo.hThread);
 end;
end;

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...