mirror of
https://github.com/n00mkrad/flowframes.git
synced 2025-12-16 16:37:48 +01:00
62 lines
1.8 KiB
C#
62 lines
1.8 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Diagnostics;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Runtime.InteropServices;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using Win32Interop;
|
|||
|
|
|
|||
|
|
namespace Flowframes.Extensions
|
|||
|
|
{
|
|||
|
|
public static class ProcessExtensions
|
|||
|
|
{
|
|||
|
|
[Flags]
|
|||
|
|
public enum ThreadAccess : int
|
|||
|
|
{
|
|||
|
|
TERMINATE = (0x0001),
|
|||
|
|
SUSPEND_RESUME = (0x0002),
|
|||
|
|
GET_CONTEXT = (0x0008),
|
|||
|
|
SET_CONTEXT = (0x0010),
|
|||
|
|
SET_INFORMATION = (0x0020),
|
|||
|
|
QUERY_INFORMATION = (0x0040),
|
|||
|
|
SET_THREAD_TOKEN = (0x0080),
|
|||
|
|
IMPERSONATE = (0x0100),
|
|||
|
|
DIRECT_IMPERSONATION = (0x0200)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[DllImport("kernel32.dll")]
|
|||
|
|
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
|
|||
|
|
[DllImport("kernel32.dll")]
|
|||
|
|
static extern uint SuspendThread(IntPtr hThread);
|
|||
|
|
[DllImport("kernel32.dll")]
|
|||
|
|
static extern int ResumeThread(IntPtr hThread);
|
|||
|
|
|
|||
|
|
public static void Suspend(this Process process)
|
|||
|
|
{
|
|||
|
|
foreach (ProcessThread thread in process.Threads)
|
|||
|
|
{
|
|||
|
|
var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id);
|
|||
|
|
|
|||
|
|
if (pOpenThread == IntPtr.Zero)
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
SuspendThread(pOpenThread);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static void Resume(this Process process)
|
|||
|
|
{
|
|||
|
|
foreach (ProcessThread thread in process.Threads)
|
|||
|
|
{
|
|||
|
|
var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id);
|
|||
|
|
|
|||
|
|
if (pOpenThread == IntPtr.Zero)
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
ResumeThread(pOpenThread);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|