繁体   English   中英

等待流程启动C#

[英]Wait For Process Start C#

嗨,我似乎无法让我的代码按照我想要的方式工作。 我正在等待一个过程开始,AKA显示在我的任务管理器中。 虽然找不到该进程,但我不断循环; 如果找到了进程,则中断while循环并在AKA注入DLL以下执行逻辑。 我有断点,但我的代码只是不断循环,因此尽管它显示在任务管理器中,但从未找到该过程。

public static int inject(string dllPath, Process tProcess)
{
  Process targetProcess = tProcess;
  string dllName = dllPath;
  const string PROCESSNAME = "BatteryLife.exe";
  // Length == 0 = False?
   while (Process.GetProcessesByName(PROCESSNAME).Length == 0)
   {
     var test3 = "";
     Thread.Sleep(100);
     // Length == 1 = True?
     if (Process.GetProcessesByName(PROCESSNAME).Length == 1)
      break;
     var test = "";
   }
   var test2 = "";
   // the target process
   // geting the handle of the process - with required privileges
   IntPtr procHandle = OpenProcess(PROCESS_CREATE_THREAD |   PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, targetProcess.Id);
  // searching for the address of LoadLibraryA and storing it in a pointer
  IntPtr loadLibraryAddr = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
  // name of the dll we want to inject
  // alocating some memory on the target process - enough to store the name of the dll
  // and storing its address in a pointer
  IntPtr allocMemAddress = VirtualAllocEx(procHandle, IntPtr.Zero, (uint)((dllName.Length + 1) * Marshal.SizeOf(typeof(char))), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
  // writing the name of the dll there
  UIntPtr bytesWritten;
  WriteProcessMemory(procHandle, allocMemAddress,    Encoding.Default.GetBytes(dllName), (uint)((dllName.Length + 1) *  Marshal.SizeOf(typeof(char))), out bytesWritten);
 // creating a thread that will call LoadLibraryA with allocMemAddress as argument
  CreateRemoteThread(procHandle, IntPtr.Zero, 0, loadLibraryAddr, allocMemAddress, 0, IntPtr.Zero);
  return 0;
}

我认为您需要从进程名称string删除.exe

Process[] pname = Process.GetProcessesByName("BatteryLife");
if (pname.Length == 0)
{
  .....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM