在一个进程中运行另一个进程
如何实现:在程序运行过程中,加载并运行另外一个进程。
使用 LoadLibrary 可以加载一个 exe 文件到进程的地址空间中,指定的 exe 文件被加载到地址空间中后,LoadLibrary 返回了一个句柄,能否利用 LoadLibrary 返回的这个句柄,来运行另外一个 exe 文件?
对于LoadLibrary函数的描述,下面是 MSDN 的原话:
LoadLibrary can also be used to map other executable modules. For example, the function can specify an .EXE file to get a handle that can be used inFindResource orLoadResource. Do not use LoadLibrary to "run" a .EXE file.
问题求解: 如何在一个进程中,运行另外一个 exe 文件?(或者说控制 另外一个进程的 运行)
[解决办法]
我看到有个网友这么解释的,觉得讲的非常好:
CreateProcess 函数
这个函数返回的
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION;
这里有个 hProcess句柄,你调用
WaitForSingleObject(xx.hProcess, INFINITE);
就可以实现等待到程序退出,才继续执行。
大致示例代码:
CreateProcess(..., &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
然后是你需要继续执行的代码。