GARANTIR DESCONTO

Fórum Suspende Processo #548677

16/03/2016

0

Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.

tentei com a função:

function SuspendProcess(const PID: DWORD): Boolean;
var
  LibHandle: THandle;
  ProcHandle: THandle;
  NtSuspendProcess: TProcFunction;
begin
  Result := False;
  LibHandle := SafeLoadLibrary('ntdll.dll');
  if LibHandle <> 0 then
  try
    @NtSuspendProcess := GetProcAddress(LibHandle, 'NtSuspendProcess');
    if @NtSuspendProcess <> nil then
    begin
      ProcHandle := OpenProcess(PROCESS_SUSPEND_RESUME, False, PID);
      if ProcHandle <> 0 then
      try
        Result := NtSuspendProcess(ProcHandle) = STATUS_SUCCESS;
      finally
        CloseHandle(ProcHandle);
      end;
    end;
  finally
    FreeLibrary(LibHandle);
  end;
end;


mais nada resolvido. Alguem tem alguma solução ?
Junior Santos

Junior Santos

Responder

Posts

16/03/2016

Junior Santos

Ninguem?
Responder

Gostei + 0

16/03/2016

Carlos Alexandrino

Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.

tentei com a função:

function SuspendProcess(const PID: DWORD): Boolean;
var
  LibHandle: THandle;
  ProcHandle: THandle;
  NtSuspendProcess: TProcFunction;
begin
  Result := False;
  LibHandle := SafeLoadLibrary('ntdll.dll');
  if LibHandle <> 0 then
  try
    @NtSuspendProcess := GetProcAddress(LibHandle, 'NtSuspendProcess');
    if @NtSuspendProcess <> nil then
    begin
      ProcHandle := OpenProcess(PROCESS_SUSPEND_RESUME, False, PID);
      if ProcHandle <> 0 then
      try
        Result := NtSuspendProcess(ProcHandle) = STATUS_SUCCESS;
      finally
        CloseHandle(ProcHandle);
      end;
    end;
  finally
    FreeLibrary(LibHandle);
  end;
end;


mais nada resolvido. Alguem tem alguma solução ?



Olá,

Não deu certo porque? QUal a mensagem de erro que aparece?
Responder

Gostei + 0

17/03/2016

Junior Santos

Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.

tentei com a função:

function SuspendProcess(const PID: DWORD): Boolean;
var
  LibHandle: THandle;
  ProcHandle: THandle;
  NtSuspendProcess: TProcFunction;
begin
  Result := False;
  LibHandle := SafeLoadLibrary('ntdll.dll');
  if LibHandle <> 0 then
  try
    @NtSuspendProcess := GetProcAddress(LibHandle, 'NtSuspendProcess');
    if @NtSuspendProcess <> nil then
    begin
      ProcHandle := OpenProcess(PROCESS_SUSPEND_RESUME, False, PID);
      if ProcHandle <> 0 then
      try
        Result := NtSuspendProcess(ProcHandle) = STATUS_SUCCESS;
      finally
        CloseHandle(ProcHandle);
      end;
    end;
  finally
    FreeLibrary(LibHandle);
  end;
end;


mais nada resolvido. Alguem tem alguma solução ?



Olá,

Não deu certo porque? QUal a mensagem de erro que aparece?


Obrigado por responde Carlos.

Então compilo tudo certo, mais rodando nao fez oque precisava. Não suspendeu o processo pelo pid. Um programa que trabalha desta forma eh o PC Hunter da www.xuetr.com que suspende o processo e suas thread deixando todo o sistema pausado ate a liberação do resume, Mais o problema que tenho meu sistema na empresa onde não posso da permissão aos usuarios da maquina como admin pois é um sistema de telemarketing e faço assistência remota do sistema. Mais preciso suspende o processo e thread do processo apenas pelo tempo de eu pode atualizar e eu pode libera o sistema volta a trabalhar ja com nova versão.

Desde já, Obrigado.
Responder

Gostei + 0

17/03/2016

Junior Santos

Alguem ?
Responder

Gostei + 0

18/03/2016

Junior Santos

?????????????????
Responder

Gostei + 0

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

Aceitar