Suspende Processo
Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.
tentei com a função:
mais nada resolvido. Alguem tem alguma solução ?
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
Curtidas 0
Respostas
Junior Santos
16/03/2016
Ninguem?
GOSTEI 0
Carlos Alexandrino
16/03/2016
Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.
tentei com a função:
mais nada resolvido. Alguem tem alguma solução ?
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?
GOSTEI 0
Junior Santos
16/03/2016
Ola pessoal, gostaria de saber como faço para suspende um processo e todas as thread dele.
tentei com a função:
mais nada resolvido. Alguem tem alguma solução ?
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.
GOSTEI 0
Junior Santos
16/03/2016
Alguem ?
GOSTEI 0
Junior Santos
16/03/2016
?????????????????
GOSTEI 0