FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . 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.

Resposta
 
Opções do Tópico
Antigo 23-06-2005, 21:59   #1 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão Como cancelar processos em delphi???

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???
Duolon está offline   Responder com Quote
Antigo 26-06-2005, 13:22   #2 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão Re: Como eu faço isso em delphi???

Ninguem
Duolon está offline   Responder com Quote
Antigo 28-06-2005, 16:54   #3 (permalink)
Charlie Brown
Membro Senior
 
Registrado em: Oct 2001
Localização: São Paulo, SP, CEP 04017-040
Mensagens: 346
Reputação: 21 Charlie Brown está indo no caminho certo
Enviar mensagem via ICQ para Charlie Brown Enviar mensagem via MSN para Charlie Brown
Padrão

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
Charlie Brown está offline   Responder com Quote
Antigo 28-06-2005, 17:55   #4 (permalink)
Luppy
Super Participante
 
Registrado em: Aug 2001
Mensagens: 530
Reputação: 22 Luppy está indo no caminho certo
Enviar mensagem via MSN para Luppy
Padrão

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;
Luppy está offline   Responder com Quote
Antigo 04-07-2005, 11:40   #5 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Luppy
Vc pode detectar o desligamento do windows capturando a mensagem WM_ENDSESSION que a API gera, para então finalizar o...
apareceu Undeclared indentifier: 'meu processo'
Undeclared indentifier: 'FreeAndNill'

onde q eu declaro isso? e como q fica o codigo declarado? é q eu ñ manjo nada de delphi...
Duolon está offline   Responder com Quote
Antigo 05-07-2005, 4:31   #6 (permalink)
MaSCaRaDe
Super Participante
 
Avatar de MaSCaRaDe
 
Registrado em: Feb 2003
Localização: Rio de Janeiro/RJ
Idade: 30
Mensagens: 917
Reputação: 84 MaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputação
Enviar mensagem via ICQ para MaSCaRaDe Enviar mensagem via MSN para MaSCaRaDe
Padrão

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
MaSCaRaDe está offline   Responder com Quote
Antigo 05-07-2005, 20:26   #7 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por MaSCaRaDe
Em vez de colocar FreeAndNil(SeuProcesso), coloque apenas SeuProcesso.Free;

[]s DB! :twisted:
vou tentar...
__________________
:arrow:
Duolon está offline   Responder com Quote
Antigo 05-07-2005, 22:59   #8 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por MaSCaRaDe
Em vez de colocar FreeAndNil(SeuProcesso), coloque apenas SeuProcesso.Free;

[]s DB! :twisted:
O erro do FreeandNill arrumou, só apareceu isso agora: Record, object or class type required
nessas duas linhas:
SeuProcesso.Close;
SeuProcesso.Free;
__________________
:arrow:
Duolon está offline   Responder com Quote
Antigo 08-07-2005, 13:47   #9 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Duolon
O erro do FreeandNill arrumou, só apareceu isso agora: Record, object or class type required
nessas duas linh...
Alguem sabe ae!
__________________
:arrow:
Duolon está offline   Responder com Quote
Antigo 08-07-2005, 15:04   #10 (permalink)
Luppy
Super Participante
 
Registrado em: Aug 2001
Mensagens: 530
Reputação: 22 Luppy está indo no caminho certo
Enviar mensagem via MSN para Luppy
Padrão

Citação:
Alguem sabe ae!
O exemplo que coloquei era só pra ilustrar como usar a mensagem EndSession do windows, um processo não pode fechar ele mesmo dessa forma, o Close e o FreeAndNill são só figurativos.
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.
Luppy está offline   Responder com Quote
Antigo 08-07-2005, 16:52   #11 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Luppy
O exemplo que coloquei era só pra ilustrar como usar a mensagem EndSession do windows, um processo não pode fechar el...
Vou explicar...
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:
Duolon está offline   Responder com Quote
Antigo 08-07-2005, 20:12   #12 (permalink)
Luppy
Super Participante
 
Registrado em: Aug 2001
Mensagens: 530
Reputação: 22 Luppy está indo no caminho certo
Enviar mensagem via MSN para Luppy
Padrão

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?
Luppy está offline   Responder com Quote
Antigo 08-07-2005, 20:28   #13 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Luppy
Se o programa está abrindo uma instância do container svchost só pra ele o fechamento do programa deveria encerrar es...
fechando o programa ele encerra o svchost sim, mais eu gostaria de fechar esse programa sem encerrar ele... q quando fosse desligar ou reiniciar ele feche automaticamente.
como faço isso?
e como q fica o código?
__________________
:arrow:
Duolon está offline   Responder com Quote
Antigo 08-07-2005, 21:01   #14 (permalink)
Luppy
Super Participante
 
Registrado em: Aug 2001
Mensagens: 530
Reputação: 22 Luppy está indo no caminho certo
Enviar mensagem via MSN para Luppy
Padrão

Citação:
e como q fica o código?
procedure TForm1.WMEndSession(var Msg : TWMEndSession);
begin
if Msg.EndSession then
Close;
end;
Luppy está offline   Responder com Quote
Antigo 08-07-2005, 23:38   #15 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Luppy
procedure TForm1.WMEndSession(var Msg : TWMEndSession);
begin
if Msg.EndSession then
Close;
end;
ñ precisa falar o nome do precesso a ser fechado?

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:
Duolon está offline   Responder com Quote
Antigo 08-07-2005, 23:58   #16 (permalink)
Luppy
Super Participante
 
Registrado em: Aug 2001
Mensagens: 530
Reputação: 22 Luppy está indo no caminho certo
Enviar mensagem via MSN para Luppy
Padrão

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.
Luppy está offline   Responder com Quote
Antigo 09-07-2005, 0:45   #17 (permalink)
Duolon
Veterano
 
Registrado em: Feb 2004
Localização: São Paulo - SP - CEP: 08330-090
Mensagens: 1.119
Reputação: 18 Duolon está indo no caminho certo
Enviar mensagem via MSN para Duolon
Padrão

Citação:
Postado Originalmente por Luppy
Não, pque o processo deveria se encerrado automaticamente com o programa que o chamou, a não ser que esteja executand...
ñ, o Close; tá fechando o programa ñ 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:
Duolon está offline   Responder com Quote
Antigo 14-05-2006, 3:04   #18 (permalink)
maickelbr
Newbie
 
Registrado em: May 2006
Mensagens: 2
Reputação: 0 maickelbr está indo no caminho certo
Padrão

Ainda quer saber como fechar um aplicativo com um socket aberto?
maickelbr está offline   Responder com Quote
Antigo 14-05-2006, 3:06   #19 (permalink)
maickelbr
Newbie
 
Registrado em: May 2006
Mensagens: 2
Reputação: 0 maickelbr está indo no caminho certo
Padrão

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
maickelbr está offline   Responder com Quote
Antigo 15-05-2006, 8:51   #20 (permalink)
gto
GeeK
 
Avatar de gto
 
Registrado em: Aug 2002
Localização: Porto Alegre - RS
Idade: 25
Mensagens: 2.116
Reputação: 29 gto Sua luz ofusca a todosgto Sua luz ofusca a todosgto Sua luz ofusca a todosgto Sua luz ofusca a todosgto Sua luz ofusca a todos
Enviar mensagem via ICQ para gto Enviar mensagem via MSN para gto
Padrão

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:
O Svchost.exe é um nome de processo de anfitrião genérico para serviços que são executados a partir de bibliotecas de ligação dinâmica (DLL, dynamic-link library).
Citação:
O svchost.exe é um serviço capaz de hospedar outros serviços. Basicamente ele roda vários processos (um ‘grupo’), porém só um nome aparecerá listado. Ele pode, por outro lado, carregar vários grupos, o que resultará em vários svchost.exe na lista de processos, o que é um caso extremamente comum.
http://support.microsoft.com/default.aspx?scid=kb%3Bpt%3B314056
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
gto está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 13:02.