【问题标题】:How can I get the Process ID of a specific child process? (C++) [closed]如何获取特定子进程的进程 ID? (C++)[关闭]
【发布时间】:2020-09-30 21:12:45
【问题描述】:

我想获取特定子进程的进程 ID(最终将内存写入它)。这是我当前的代码:

#include <Windows.h>
#include <iostream>
#include <TlHelp32.h>
#include <string>
#include <tchar.h>
#include <stdio.h>
#include <psapi.h>

using namespace std;

int main(void)
{
    DWORD ProcessID;

    HWND hwnd = FindWindowA(NULL, "AJ Classic");
    if (hwnd == NULL) {
        cout << "Can't find Process." << endl;
        Sleep(3000);
        exit(-1);
    }
    else {
        GetWindowThreadProcessId(hwnd, &ProcessID);
        HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);

        if (ProcessID == NULL) {
            cout << "Can't optain process" << endl;
            Sleep(3000);
            exit(-1);
        }
        else {
            cout << "Process ID: " << ProcessID << " | Hex: " << hex << ProcessID << dec << endl;
        }
    }
    getchar();
}

在开始实际的内存写入之前,我想确保获得正确的进程 ID。 我当前运行代码时获得的进程 ID 不是来自我想要的 proc id 的子进程。 此屏幕截图代表我试图获取进程 ID 的进程:

我的代码获取 ID 8120,但我希望它获取 14244 进程。 如何做到这一点?

【问题讨论】:

  • 您想要的进程与所有其他同名进程的区别是什么?
  • 我对这个问题感到困惑,Barmar。
  • 有一堆同名的进程。您要求一个具有该名称的进程,它会返回其中一个。但你想要一个不同的。你真正想要的标准是什么?是什么让 14244 比 8120 更合适?
  • 当我在游戏中使用作弊引擎时,我只能编辑14244进程的值和内存。我认为这与游戏使用的模块有关,所以只有倒数第二个孩子进程让我编辑内存
  • @Silver 这不太可能是 14244 是您可以编辑的唯一进程的真正原因。此外,PROCESS_ALL_ACCESS 的权限太多了,只需要编辑内存即可。不要要求比实际需要更多的权限。在这种情况下,您只需要询问PROCESS_VM_READPROCESS_VM_WRITEPROCESS_VM_OPERATION

标签: c++ winapi process child-process


【解决方案1】:

如果有多个具有给定名称的顶级窗口,您应该使用 EnumWindows,然后在您的EnumWindowsProc 中检查是否是您需要的窗口;如果是 - 继续 GetWindowThreadProcessId

基于cmets,这与window无关。因此,您应该使用EnumProcesses 完成所有过程,而不是寻找窗口FindWindowA。但是,“倒数第二”并不是一个好的 ID;这显然取决于排序顺序。你还知道如何识别你的目标进程吗?

【讨论】:

  • OP 要求一个子窗口,
  • @stark - 我认为他要求一个子进程...
  • 我不太清楚你的意思。我只是想获取 AJ Classic 的倒数第二个子进程的进程 ID
  • @Silver - 请查看更新后的答案
  • 我对如何识别我的目标进程一无所知。实际上它是倒数第二个,就我而言,它一直都是。我已经使用 Cheat Engine 的“倒数第二个”流程超过 2 年了,它是唯一有效的流程。
猜你喜欢
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2014-11-02
  • 2016-01-20
  • 2011-07-16
  • 2023-03-29
  • 2015-09-08
  • 1970-01-01
相关资源
最近更新 更多