首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在一个历程中运行另一个进程

2013-08-10 
在一个进程中运行另一个进程如何实现:在程序运行过程中,加载并运行另外一个进程。使用 LoadLibrary 可以加

在一个进程中运行另一个进程
如何实现:在程序运行过程中,加载并运行另外一个进程。

使用 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);

然后是你需要继续执行的代码。

热点排行