PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Fechar um processo. #484284

02/07/2014

0

Bom dia, estou com um probleminha e não estou conseguindo solucionar, primeiramente a explicação.

Tenho uma aplicação principal(EXE) com diversas DLL's, em determinado ponto eu abro uma outra aplicação(EXE), com o ShellExecute.
ShellExecute(Handle, 'Open', PChar(ExtractFilePath(ParamStr(0)) + 'Sis_Exec_SQL.exe'), '', '', SW_HIDE);


Até aí tudo bem, nessa aplicação secundária eu gravado em uma tabela o Handle dele, no caso:
Application.Handle;


Ok, até aí tudo bem também(eu acho), essa aplicação secundária está lá rodando normalmente, até que na minha aplicação principal eu clicko em um botão para parar a execução dessa aplicação secundária, eu faço select na tabela onde essa aplicação secundária gravou o seu handle, e dou ProcessTerminate(HWND, 0), onde HWND é a variável que guardou o resultado o select, porem aí está o problema, não acontece nada, ele não fecha a outra aplicação.

P.S.: Antes que me digam para usar o FindWindow e me passem link desses códigos, já aviso que não posso usá-lo, não servem para o meu caso, também não posso usar isso aqui:
function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;




Att,
Thiago irrazabal de Oliveira.
Thiago Irrazabal

Thiago Irrazabal

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar