// 第一种使用方法
//
char szCommandLine[] = "notepad";
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效
si.wShowWindow = TRUE;//此成员设为TRUE的话则显示新建进程的主窗口
BOOL bRet = CreateProcess(
NULL,//不在此指定可执行文件的文件名
_tcsdup(TEXT("c:\\windows\\system32\\notepad.exe")),//命令行参数
NULL,//默认进程安全性
NULL,//默认进程安全性
FALSE,//指定当前进程内句柄不可以被子进程继承
CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口
NULL,//使用本进程的环境变量
NULL,//使用本进程的驱动器和目录
&si,
&pi);
if (bRet)
{
//不使用的句柄最好关掉
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
printf("新进程的ID号:%d\n", pi.dwProcessId);
printf("新进程的主线程ID号:%d\n", pi.dwThreadId);
}
// 第二种使用方法
//
// 本人使用这个方法,是在UNCODE字符集。
// 使用时需要注意一下字符集,有可能会因为字符集的原因会出现其它错误。
STARTUPINFO StartInfo = { sizeof(StartInfo) };
PROCESS_INFORMATION ProcInfo;
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = FALSE;
//LPTSTR pro = _tcsdup(TEXT("c:\\windows\\system32\\notepad.exe"));
LPTSTR pro = _tcsdup(TEXT("D:\\testfile\\Release\\MSGClient.exe"));
CreateProcess(NULL, pro, NULL, NULL, NULL, NULL, NULL, NULL, &StartInfo, &ProcInfo);
system("pause");
// 第三种使用方法
//
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"";
shExecInfo.lpFile = L"D:\testfile\\Release\\MSGClient.exe";
//shExecInfo.lpParameters = __argv[1];
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_SHOW;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
//错误代码获取
/
DWORD dw = GetLastError();