Что нового

[Процессы] Как "заморозить/разморозить" процесс с известным PID?

ekodom

Новичок
Сообщения
7
Репутация
0
Собственно, вся суть проблемы уже изложена в названии темы :smile:

Например тот же Process Explorer от Mark Russinovich делает это запрсто -
но мне непонятно ни КАК он это делает ни как сие СДЕЛАТЬ на autoit... :-\
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
Func _ProcSuspendResume($process)
	$processid = ProcessExists($process)
	If $processid Then
		If $fSuspended Then
			$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
			$i_sucess = DllCall("ntdll.dll","int","NtResumeProcess","int",$ai_Handle[0])
			DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
			If IsArray($i_sucess) Then 
				$fSuspended = 0
				Return 1
			Else
				SetError(1)
				Return 0
			Endif
		Else
			$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
			$i_sucess = DllCall("ntdll.dll","int","NtSuspendProcess","int",$ai_Handle[0])
			DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
			If IsArray($i_sucess) Then 
				$fSuspended = 1
				Return 1
			Else
				SetError(1)
				Return 0
			Endif
		EndIf
	Else
		SetError(2)
		Return 0
	Endif
EndFunc

Global $fSuspended = 0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kaster
А как теперь процесс вернуть в рабочее состояние?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Процессы] Как \"заморозить/разморозить\" процесс с известным PID?

madmasles
Вызвать функцию еще раз.


Добавлено:
Сообщение автоматически объединено:

Поочередный вызов функции делает последовательные Suspend/Resume
 

gadger

Новичок
Сообщения
1
Репутация
0
На win7 замороженный процесс не активируется
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
gadger
все работает на семерке.
вот пример с форума
 

RockMan

Новичок
Сообщения
67
Репутация
0
а как получить статус процесса ? приостановлен он или нет ?
 
Верх