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

Problemas com oleContainer - Windowd.exe continua na memória


Zenner

Pergunta

Bom dia turma.. Tudo na paz com todos/

Tenho um sistema onde, em um formulário, existe um oleContainer que abre o word com um documento. O sistema procura por parâmetros dentro do texto do word e os troca com base nos dados do banco de dados.

Tudo funciona 100% em vários computadores ( 13 mais especifico ), mas em alguns, após a execução o word continua na memória, mesmo eu finalizando o sistema.

A versão do word é a mesma em todas as máquinas ( foi comprada uma licença para a empresa ).

 

Então pergunto, como fazer para que essa instância seja tirada da memória?  Não posso dar um KILL no processo pois o word da maquina pode estar sendo usado com outros documentos abertos, o que acarretaria a perca deles..

E agora? quem poderá me defender?  uheuhuhuheuhue =D

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

pode usar sem problemas ....

-------------------------------------------------------------------------------------------------------------

function TForm1.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;

-------------------------------------------------------------------------------------------------------------------

a função KillTask só vai tirar da memória a instancia do word criado pelo programa

se houver outras instancias criadas pelo proprio word, elas não serão tiradas

abraço

 

Link para o comentário
Compartilhar em outros sites

  • 0

fiz um teste aqui... está funcionando normal

a funçao esta matando somente a instancia do word criada pelo programa

as outras criadas pelo proprio word continuam lá ... 

 

ou voce pode tentar assim:

Ao iniciar, cada processo recebe uma identificação numérica única, atribuída pelo sistema — chama-se PID, Process IDentification.

Para “matar” um programa em execução, você precisa saber o PID dele

O PID é um numero que identifica cada instancia

exemplo :  WINWORD.EXE  PID = 3104 - 2º documento criado

                 WINWORD.EXE  PID = 2284 - 1º documento criado

voce pode procurar o PID do processo pelo seu programa e matar somente ele

Nome da imagem            Identi Nome da sessÆo    SessÆo# Uso de mem¢r
========================= ====== ================ ======== ============
System Idle Process            0 Console                 0         28 K
System                         4 Console                 0        260 K
smss.exe                     832 Console                 0        392 K
csrss.exe                    896 Console                 0      5.624 K
winlogon.exe                 928 Console                 0      1.356 K
services.exe                 972 Console                 0      3.996 K
lsass.exe                    984 Console                 0      1.516 K
svchost.exe                 1152 Console                 0      4.972 K
svchost.exe                 1220 Console                 0      4.132 K
svchost.exe                 1364 Console                 0     19.440 K
svchost.exe                 1536 Console                 0      3.592 K
spoolsv.exe                 1772 Console                 0      5.552 K
hrsrv.exe                   1904 Console                 0      6.012 K
mysqld.exe                  1936 Console                 0     16.856 K
s3loadsv.exe                1972 Console                 0      2.840 K
ss_conn_service.exe          284 Console                 0      2.548 K
svchost.exe                  344 Console                 0      3.892 K
vsmon.exe                    444 Console                 0     13.256 K
alg.exe                     1048 Console                 0      3.312 K
explorer.exe                1348 Console                 0     31.024 K
Monitor.exe                 1356 Console                 0     12.348 K
zlclient.exe                1696 Console                 0      4.720 K
firefox.exe                 4088 Console                 0    243.808 K
delphi32.exe                2520 Console                 0     12.168 K
notepad.exe                 1172 Console                 0        600 K
Project2.exe                3320 Console                 0      6.016 K
cmd.exe                     3088 Console                 0      2.432 K
notepad.exe                 3296 Console                 0      3.548 K
WINWORD.EXE                 2560 Console                 0     23.396 K
WINWORD.EXE                 1648 Console                 0     23.204 K

tasklist.exe                4004 Console                 0      4.304 K
wmiprvse.exe                3308 Console                 0      5.464 K

-------------------------------------------------------------------------------------------------

para matar o processo seria apenas esse comando   tskill 2560  que voce pode executar pelo shellexecute ou o comando winexec do delphi

veja ... essa é a uma das maneiras de fazer o que esta querendo

http://www.guiadopc.com.br/dicas/33353/matar-processos-linha-comando-windows.html

abraço

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