|
![]() |
||
Como cancelar processos em delphi???
|
||
. Nós temos 754.116 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Veterano
|
Tipo to com um programa aki em delphi, quando eu abro ele ele cria um processo no windows como todos os programas em execução criam, só q na hora de desligar ou reiniciar o micro, tem q finalizar esse processo no windows se ñ o windows ñ desliga, gostaria q alguem me falasse tipo um código IF q se reiniciar ou desligar ele finalize automaticamente esse processo.
alguem sabe??? |
|
|
|
|
|
#2 (permalink) |
|
Veterano
|
Ninguem
![]() |
|
|
|
|
|
#3 (permalink) |
|
Membro Senior
|
Eu não conheço em particular o Delphi, mas me deixe perguntar: é um programa qualquer q vc fez, e esse programa em particular quando vc o fecha, ele continua rodando, é isso?
Sei lá, é esquisito. Não é serviço, nem nada do tipo? Talvez seja melhor vc primeiro tentar diagnosticar o por quê o processo não se encerra sozinho como deveria, ao invés de fechá-lo na marra.
__________________
Charles Roberto Canato ROC Series, campeonato online de NASCAR Racing 2003: http://www.rocseries.com.br |
|
|
|
|
|
#4 (permalink) |
|
Super Participante
|
Vc pode detectar o desligamento do windows capturando a mensagem WM_ENDSESSION que a API gera, para então finalizar o processo.
procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION; procedure TForm1.WMEndSession(var Msg : TWMEndSession); begin if Msg.EndSession then begin SeuProcesso.Close; FreeAndNill(SeuProcesso); end; end; |
|
|
|
|
|
#5 (permalink) | |
|
Veterano
|
Citação:
Undeclared indentifier: 'FreeAndNill' onde q eu declaro isso? e como q fica o codigo declarado? é q eu ñ manjo nada de delphi... ![]() |
|
|
|
|
|
|
#6 (permalink) |
|
Super Participante
|
Em vez de colocar FreeAndNil(SeuProcesso), coloque apenas SeuProcesso.Free;
[]s DB! :twisted:
__________________
"Read the directions and directly you will be directed in the right direction." http://www.dmbtecnologia.com.br |
|
|
|
|
|
#7 (permalink) | |
|
Veterano
|
Citação:
__________________
:arrow: |
|
|
|
|
|
|
#8 (permalink) | |
|
Veterano
|
Citação:
nessas duas linhas: SeuProcesso.Close; SeuProcesso.Free;
__________________
:arrow: |
|
|
|
|
|
|
#9 (permalink) | |
|
Veterano
|
Citação:
__________________
:arrow: |
|
|
|
|
|
|
#10 (permalink) | |
|
Super Participante
|
Citação:
Para um programas ou um processo fechar ele mesmo use só Close ou Aplication.Terminate, claro que isso apenas pode não ser suficiente para encerrar o que o processo está fazendo, explique exatamente o que esse processo faz para podermos ajudá-lo. |
|
|
|
|
|
|
#11 (permalink) | |
|
Veterano
|
Citação:
eu execulto um programa feito em delphi, esse programa cria um arquivo chamado svchost.exe na pasta windows, só q quando tento desligar ou reiniciar a máquina com esse processo aberto, o win simplesmente ñ desliga ou reinicia, para fazer essa tarefa é preciso dar um ctrl+alt+del e finalizar o svchost.exe da lista de processos.... gostaria de saber como poder desligar o win sem precisar finalizar o processo a função desse programa é mandar email por smtp PS: meu win é xp pro com sp2 tem alguma coisa a ver?
__________________
:arrow: |
|
|
|
|
|
|
#12 (permalink) |
|
Super Participante
|
Se o programa está abrindo uma instância do container svchost só pra ele o fechamento do programa deveria encerrar essa instância.
Tente fechar o programa pra ver se ele encerra o svchost. Outra coisa, o seu programa está configurado para iniciar como serviço do windows? porque? |
|
|
|
|
|
#13 (permalink) | |
|
Veterano
|
Citação:
como faço isso? e como q fica o código?
__________________
:arrow: |
|
|
|
|
|
|
#14 (permalink) | |
|
Super Participante
|
Citação:
begin if Msg.EndSession then Close; end; |
|
|
|
|
|
|
#15 (permalink) | |
|
Veterano
|
Citação:
eu coloquei isso lá em cima em type se ñ dava erro: procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION; aí compilei normalmente sem nenhum erro, só q ainda ñ tá finalizando o processo, e ñ tá desligando o windows...
__________________
:arrow: |
|
|
|
|
|
|
#16 (permalink) |
|
Super Participante
|
Não, pque o processo deveria se encerrado automaticamente com o programa que o chamou, a não ser que esteja executando alguma thread independente, que claro, deve ser encerrada via código também.
O close pelo menos fechou o programa? Tente Application.Terminate no lugar do close. Com as poucas(ou nenhuma) informações que vc passou sobre o código fonte estou apenas chutando, nesse caso não tenho mais nenhum palpite. |
|
|
|
|
|
#17 (permalink) | |
|
Veterano
|
Citação:
ñ sei pq....teria algum outro code pra desligar na "marra" o windows quando este programa está execultado? ou tipo uma simulação do reset...
__________________
:arrow: |
|
|
|
|
|
|
#18 (permalink) |
|
Newbie
Registrado em: May 2006
Mensagens: 2
Reputação: 0
![]() |
Ainda quer saber como fechar um aplicativo com um socket aberto?
![]() |
|
|
|
|
|
#19 (permalink) |
|
Newbie
Registrado em: May 2006
Mensagens: 2
Reputação: 0
![]() |
Existem varias soluçoes para seu problema!!!!
forçar o desligamento do windows XP é facil nesses casos, mas nao recomendo tem uma solução melhor |
|
|
|
|
|
#20 (permalink) | ||
|
GeeK
|
Tchê, só tem uma maneira de resolver... O que acontece é que alguma coisa, dentro do seu programa, abre uma instância do SVCHOST, um processo do sistema, e isso acontece pelo seguinte:
Citação:
Citação:
http://linhadefensiva.uol.com.br/docs/svchost/ Resumindo: o SVCHOST (SerViCeHOST), é um aplicativo "base" para rodar outros aplicativos especiais e serviços, que é gerenciado pelo próprio sistema. Várias instâncias dele podem aparecer no gerenciador, já que cada um deles pode gerenciar alguns diversos serviços ao mesmo tempo. Ok então, voltando ao seu programa: A única maneira certa de fazer fechar o windows, é saber qual parte do seu programa abre o SVCHOST. O que ele tem de mais? O que ele faz? Abre conexões de internet, ou rede? Trabalha com serviços? Depende de alguma função de DLLs externa? Será preciso descobrir de onde ele vem, para poder destruí-lo Há maneiras de forçar o fechamento, mas descobrir onde ele é criado levará você a uma solução simples: Detectar o fechamento do windows com a mensagem WMEndSession e se isso acontecer, desligar a operação que gerou o svchost, para que ele se limpe por conta.Caso você não entenda alguma coisa, avalie a possibilidade de postar esse código para "nóis vê" ![]() []'s
__________________
Tis -> TE AMO !!! ![]() Sony Vaio VPC-EB17FX/W Intel Core i3 M330 - 4GB DDR3 - 500GB Sata II - ATI 5470HD 512Mb - 15.5 LED FullHD - Blu-Ray |
||
|
|
|
![]() |
| Opções do Tópico | |
|
|