我利用文件内存映射实现主进程与自进程的通讯。
作为内存共享数据的文件句柄是以子进程ID号为准。
问题是,主进程创建子进程后,如何获取子进程的ID号,使用哪个API函数?
愿听高见!

解决方案 »

  1.   

    实在是看不懂你的问题!!
     如果是使用CreateProcess来创建另一个进程的话,你传递的PROCESS_INFORMATION结构体中返回后回保存这个新进程的信息。
     如果是指线程的话,那CreateThread的最后一个参数返回的便是线程ID具体函数定义详见 CreateProcess , CreateThread, PROCESS_INFORMATION
      

  2.   

    是的CreaetProcess的话,PROCESS_INFORMATION中是子进程的ID和Handletypedef struct _PROCESS_INFORMATION {
        HANDLE hProcess; 
        HANDLE hThread; 
        DWORD dwProcessId; 
        DWORD dwThreadId; 
    } PROCESS_INFORMATION;
      

  3.   

    获得进程ID:processtopid
        EnumProcesses(lpidprocesses,sizeof(lpidprocesses),&cbneeded);
        //列举所有的进程
        OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,lpidprocesses[i]);
        //以查询信息和读取的方式打开进程
        EnumProcessModules(hprocess,&hmodule,sizeof(hmodule),&cbneeded);
        //获得进程模块的句柄
        GetModuleBaseName(hprocess,hmodule,normalname,sizeof(normalname));
        //获得特定模块的名字,以备比较