Suspende Processo

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

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

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

17/03/2016

Junior Santos

Alguem ?
Responder

18/03/2016

Junior Santos

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar