VC中如何启动其它程序,并且获得启动程序的PID

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:06:45
比如启动 c:\test.exe 然后获得运行test的PID

如题,希望给出源代码示例,谢谢。

PROCESS_INFORMATION piProcInfoGPS;
STARTUPINFO siStartupInfo;
SECURITY_ATTRIBUTES saProcess, saThread;
ZeroMemory( &siStartupInfo, sizeof(siStartupInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
saProcess.nLength = sizeof(saProcess);
saProcess.lpSecurityDescriptor = NULL;
saProcess.bInheritHandle = true;
saThread.nLength = sizeof(saThread);
saThread.lpSecurityDescriptor = NULL;
saThread.bInheritHandle = true;
::CreateProcess(NULL,"c:\\test.exe",&saProcess,&saThread,false,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&siStartupInfo,&piProcInfoGPS);

这样就可以执行c:\test.exe
如果你要的PID是进程ID那么这个
piProcInfoGPS.dwProcessId就是PID。

Windows下,微软推荐是的CreateProcess函数。使用这个函数,可以直接得到目标进程的句柄。

而如果使用Shellexecute,则必须采用其它方法得到目标进程句柄。

另外,Winexec是WIN16时代的东西,已经不推荐使用。

三个SDK函数 winexec, shellexecute,createprocess可以使用。

WinExec最简单,两个参数,前一个指定路径,后一个