Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› Как заморозить процесс, зная его хэндл?
Посл.ответ Сообщение

Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 22 мая 2006 06:15
· Личное сообщение · #1

Либо у меня глюк, либо просто за компом пересидел... Ну не могу разобраться, как? Ведь можно 200%!

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 22 мая 2006 07:12
· Личное сообщение · #2

Так... нашел сам...

Оказывается, я все сделал так же, только вот функции OpenThread в моей справке по WinAPI не оказалось...

Ссылка, кому интересно:
http://forum.sources.ru/showtopic=81280&hl= http://forum.sources.ru/showtopic=81280&hl=

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 22 мая 2006 10:33
· Личное сообщение · #3

Вот, если кому-нибудь нужно...

void SuspendProcess(DWORD dwProcessID, bool Suspend)
{
THREADENTRY32 te;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwProcessID);

ZeroMemory(&te, sizeof(te));
te.dwSize = sizeof(te);

if(Thread32First(hSnapshot, &te))
do
{
if(te.th32OwnerProcessID == dwProcessID)
{
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME, false, te.th32ThreadID);

if(hThread)
{
if(Suspend)
SuspendThread(hThread);
else
ResumeThread(hThread);

CloseHandle(hThread);
}
}
}
while(Thread32Next(hSnapshot, &te));

CloseHandle(hSnapshot);
}


-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 186.8 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 22 мая 2006 17:57
· Личное сообщение · #4

На всякий пожарный:
В процессе саспенда потоков могут быть следующие неприятные ситуации:
1) Поток завершил работу;
2) Были созданы дополнительные потоки, которые не были заморожены.

Поэтому, если точная работа функции критична, нужно проверять ситуацию на эти варианты.



Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 08 ноября 2011 15:41
· Личное сообщение · #5

Tim

Ядро это за вас делает в NtSuspendProcess.


 eXeL@B —› Программирование —› Как заморозить процесс, зная его хэндл?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати