freedom_wings4 2016-08-28 03:34 采纳率: 0%
浏览 1018
已采纳

windows用snapshot找到指定进程的id,然而用来openprocess却是127

代码

 int GetTargetProcessId()
{
    PROCESSENTRY32 pe32;
    pe32.dwSize=sizeof(pe32);

    DWORD ProcessId;

    HANDLE hHandle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if(hHandle==INVALID_HANDLE_VALUE)
    {
        printf("fail to call\n");
        exit(-1);
    }

    int TargetProcessId;

    const wchar_t *target=L"notepad.exe";

    BOOL bMore=::Process32First(hHandle,&pe32);

    while(bMore)
    {
        printf("the name is %ws ,the id is %d\n",pe32.szExeFile,pe32.th32ProcessID);


        if((wcscmp(pe32.szExeFile,target))==0)
        {
            TargetProcessId=pe32.th32ProcessID;
            return TargetProcessId;
        }
        bMore=::Process32Next(hHandle,&pe32);

    }

    return -1;
    }



    int main()
{
    HANDLE hTargetHandle;
    int TargetProcessId=GetTargetProcessId();
    //DWORD TargetProcessId=3304;

    hTargetHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,TargetProcessId);
    if(hTargetHandle==INVALID_HANDLE_VALUE);
    {

        printf("openprocess fail\n");
        printf("the TargetProcessId is: %d\n",TargetProcessId);
        DWORD d=GetLastError();
        printf("the result of getlast is: %d\n",d);
        system("PAUSE");
        exit(-1);
    }


我运行记事本后再运行这个程序,找到了记事本的进程的id,用openprocess,却失败了,getlasterror的结果是127,找不到制定的程序
图片说明

希望大神指点

  • 写回答

3条回答 默认 最新

  • 哈彿小丸子 2016-08-31 03:39
    关注

    hTargetHandle=OpenProcess(PROCESS_TERMINATE, FALSE, TargetProcessId);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码