lpApplicationName:指向一个以空结尾的串,他指定了要执行的模块 ***此参数为空时命令行参数才能正常传递*** 想运行的可执行文件的名字的字符串(应含扩展名)。如果找不到该文件,CreateProcess运行失败。应该设为NULL。
lpCommandLine:指向一个以空结尾的串,该串定义了要执行的命令行.传递给新进程的命令行字符串,应当为非常量字符串的地址。可以设定一个完整的命令行,如果第一个标记没有扩展名,CreateProcess将其假设为.exe。如果找不到该文件,CreateProcess按环境设置目录搜索运行。
lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承.
lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承.
bInheritHandles,:表明新进程是否从调用进程继承句柄.
dwCreationFlags:定义控制优先类和进程创建的附加标志.
lpEnvironment:指向一个新进程的环境块.
lpCurrentDirectory:指向一个以空结尾的串,该串定义了子进程的当前驱动器和当前目录.
lpStartupInfo:指向一个STARTUPINFO结构,该结构定义了新进程的主窗口将如何显示.
lpProcessInformation:指向PROCESS_INFORMATION结构,该结构接受关于新进程的表示信息.
使用
//WinExec(path.c_str(), SW_SHOW);
//HINSTANCE instance = ShellExecute(NULL, "open", path.c_str(), NULL, NULL, SW_SHOWNORMAL);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
auto desPath = path + " " + parameter;
//WinExec("explorer E:\work\code\AutoUpdate\AutoUpdate\AutoUpdate\Debug\win7sp1.msu", SW_SHOWNA);
if (CreateProcess(NULL, (LPSTR)desPath.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
//if (CreateProcess(path.c_str(), (LPSTR)parameter.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
//if (CreateProcess(path.c_str(), _T("E:\work\code\AutoUpdate\AutoUpdate\AutoUpdate\Debug\win7sp1.msu"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
}
else {
//创建失败
}
//等待程序执行结束:
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);