Что нового

Заморозка процесса

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Здравствуйте.
Доброй ночи.

Помогите разобраться.
В диспетчере задач - с процессом можно сделать две вещи: 1.Изменить его приоритет. 2. Завершить.

А в программе Anvir (по сути - тот же диспетчер задач) - имеется еще функция "Приостановить процесс-Возобновить процесс".
Эта опция как бы ставит данный процесс - на паузу, замораживает.

Скажите можно ли так заморозить, например процесс - notepad.exe ?

Это окно - как бы застывает, в нем ничего нельзя написать, не работают кнопки "свернуть", "закрыть". Просто ярлык блокнота - будет висеть на панели задач, пока процесс не разморозят.
 
A

Alofa

Гость
По мотивам НЕофициальный FAQ AutoIt

Код:
#include <WinAPI.au3> 
#include <ProcessConstants.au3>

_ProcessSuspend('notepad.exe', True) ; Приостанавливаем процесс
Sleep(5000)
_ProcessSuspend('notepad.exe') ; Возобнавляем работу процесса


Func _ProcessSuspend($sProcess, $vProcSetState = False) ; $vProcSetState = True ; Приостанавливаем процесс
	Local $hProcess, $iSucess, $iPID = ProcessExists($sProcess)
	If Not $iPID Then Return SetError(1, 0, 0)
	$vProcSetState = ($vProcSetState) ? 'NtSuspendProcess' : 'NtResumeProcess'
	
	$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, 0, $iPID)
	If @error Then Return SetError(2, 0, 0)
	$iSucess = DllCall('ntdll.dll', 'int', $vProcSetState, 'int', $hProcess)
	_WinAPI_CloseHandle($hProcess)
	If Not IsArray($iSucess) Then Return SetError(3, 0, 0)
	Return 1
EndFunc   ;==>_ProcessSuspend
 
Верх