12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace WechatPCMsgBakTool.Helpers
- {
- public class ProcessHelper
- {
- public static Process? GetProcess(string ProcessName)
- {
- Process[] processes = Process.GetProcessesByName(ProcessName);
- if (processes.Length == 0)
- return null;
- else if(processes.Length > 1) {
- SelectWechat selectWechat = new SelectWechat();
- MessageBox.Show("检测到有多个微信,请选择本工作区对应的微信");
- selectWechat.ShowDialog();
- if (selectWechat.SelectProcess == null)
- return null;
- Process? p = processes.ToList().Find(x => x.Id.ToString() == selectWechat.SelectProcess.ProcessId);
- if (p == null)
- return null;
- return p;
- }
- else
- return processes[0];
- }
- public static ProcessModule? FindProcessModule(int ProcessId, string ModuleName)
- {
- Process process = Process.GetProcessById(ProcessId);
- foreach (ProcessModule module in process.Modules)
- {
- if (module.ModuleName == ModuleName)
- return module;
- }
- return null;
- }
- public static byte[]? ReadMemoryDate(IntPtr hProcess, IntPtr lpBaseAddress, int nSize = 100)
- {
- byte[] array = new byte[nSize];
- if (ReadProcessMemory(hProcess, lpBaseAddress, array, nSize, 0) == 0)
- return null;
- else
- return array;
- }
- [DllImport("kernel32.dll")]
- public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, int lpNumberOfBytesRead);
- }
- }
|