LuizAraujo Postado Abril 21, 2006 Denunciar Share Postado Abril 21, 2006 Alo pessoalEstou precisando de um helpComo finalizar um programa chamado pelo comando winexec.so falta isso. Luiz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Bittencourt Muniz Postado Abril 21, 2006 Denunciar Share Postado Abril 21, 2006 Já tentou usar a API do Windows 'TerminateProcess'?Falows! Qualquer dúvida post! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 22, 2006 Denunciar Share Postado Abril 22, 2006 Neste link(http://www.swissdelphicenter.ch/torry/showcode.php?id=266) tem duas rotinas para finalizar processos. Talvez uma lhe sirva, já que você utiliza WinExec.Porém, o help do Delphi diz o seguinte sobre WinExec: This function is provided for compatibility with earlier versions of Windows. For Win32-based applications, use the CreateProcess function.Acho esta opção particularmente interessante porque, se for um processo iniciado por sua aplicação, você terá como terminar especificamente ela.No exemplo abaixo, utilizei um form com um botão para iniciar o processo(programa) e outro para encerrá-lo. Funcionou legal, porém, não sei se é a solução ideal em virtude de algumas possíveis restrições colocadas pelo uso de TerminateProcess (vide help). Talvez algum colega possa fazer alguma colocação a respeito. Também fiquei intrigado pelo fato de não funcionar ao utilizar, na função CreateProcess, o parâmetro nome do módulo(com o programa) e linha de comando(com o arquivo texto) - inicia o notepad mas não abre o arquivo, obrigando a utilizar apenas linha de comando.var ProcessInformation :TProcessInformation; procedure TForm1.btnStartClick(Sender: TObject); var StartupInfo :TStartupInfo; begin FillChar(StartupInfo, SizeOf(StartupInfo), 0); FillChar(ProcessInformation, SizeOf(ProcessInformation), 0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOWNORMAL; btnStop.Enabled := CreateProcess(nil, // Nome do módulo executável 'c:\windows\notepad.exe c:\temp\teste.txt', // Linha de comando nil, // Atributos do processo (SECURITY_ATTRIBUTES) nil, // Atributos da thread (SECURITY_ATTRIBUTES) False, // Herdar handles do processo chamador CREATE_NEW_CONSOLE or // Flags de criação e NORMAL_PRIORITY_CLASS, // de prioridade nil, // Variáveis de ambientes para o processo nil, // Diretório corrente do processo StartupInfo, // Determina como a janela do processo deve aparecer ProcessInformation); // Informações sobre o processo criado btnStart.Enabled := not btnStop.Enabled; end; procedure TForm1.btnStopClick(Sender: TObject); begin btnStop.Enabled := False; btnStart.Enabled := not btnStop.Enabled; if not TerminateProcess(ProcessInformation.hProcess, 0) then ShowMessage('O processo já foi encerrado pelo usuário!'); end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LuizAraujo Postado Abril 25, 2006 Autor Denunciar Share Postado Abril 25, 2006 Valeu pelas informaçõesanotei todas e sei que aproveitarei estas dicasum abraço Luizcomplementandoalo micheus deu certo com as dicas, e encerrei varios programas abertos ao mesmo tempo,tanto usei sua procedure juntamente com a função KillTaske tambem usando KillTask com winexec, os dois em win98.Valeu! pelas dicas Um abraço Luizaraujo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Abril 30, 2006 Denunciar Share Postado Abril 30, 2006 muito boa estas dicasutilizei as mesmas e deu certovaleu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LuizAraujo Postado Maio 1, 2006 Autor Denunciar Share Postado Maio 1, 2006 Alo micheuscoloquei um arquivo( Teste.doc )na pasta do executável (C:\LanHouse\Micro1) e coloquei na linhaBtnStop.Enabled:=CreatProcess(nil, 'C:\Arquivos de programas\Microsoft Office\Office\WINWORD.EXE Teste.Doc', nil...abriu sem precisar indicar o caminho.Valeu luizaraujo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Alexandre Martinez Postado Agosto 25, 2008 Denunciar Share Postado Agosto 25, 2008 As dicas são excelentes.Eu utilizei sem informar o caminho completo e funcionou direitinho.BtnStop.Enabled:=CreatProcess(nil, 'WINWORD.EXE Teste.Doc', nil...Acontece que se o programa (WINWORD.EXE) e o arquivo (Teste.Doc) estiverem na mesma pasta que o executável e/ou em um dos path's do windows, vai funcionar sem precisar informar o caminho.Vlw mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LuizAraujo
Alo pessoal
Estou precisando de um help
Como finalizar um programa chamado pelo comando winexec.
so falta isso. Luiz
Link para o comentário
Compartilhar em outros sites
6 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.