2
0

ProcessHelper.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace WechatPCMsgBakTool.Helpers
  9. {
  10. public class ProcessHelper
  11. {
  12. public static Process? GetProcess(string ProcessName)
  13. {
  14. Process[] processes = Process.GetProcessesByName(ProcessName);
  15. if (processes.Length == 0)
  16. return null;
  17. else
  18. return processes[0];
  19. }
  20. public static ProcessModule? FindProcessModule(int ProcessId, string ModuleName)
  21. {
  22. Process process = Process.GetProcessById(ProcessId);
  23. foreach (ProcessModule module in process.Modules)
  24. {
  25. if (module.ModuleName == ModuleName)
  26. return module;
  27. }
  28. return null;
  29. }
  30. public static byte[]? ReadMemoryDate(IntPtr hProcess, IntPtr lpBaseAddress, int nSize = 100)
  31. {
  32. byte[] array = new byte[nSize];
  33. if (ReadProcessMemory(hProcess, lpBaseAddress, array, nSize, 0) == 0)
  34. return null;
  35. else
  36. return array;
  37. }
  38. [DllImport("kernel32.dll")]
  39. public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, int lpNumberOfBytesRead);
  40. }
  41. }