CreateProcess(或 CreateProcessA/W)建立新程序。需填寫 STARTUPINFO 指定視窗顯示狀態。
/* main.cpp
* Created on: 2014.06.08
* Author: Spike
*/
#include <iostream>
#include <windows.h>
using namespace std;
bool startProcess(const string& name) {
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
PROCESS_INFORMATION pi = {0};
if (!CreateProcess(NULL, (LPSTR)name.c_str(), NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi)) {
cout << "Create Error!" << endl;
return false;
}
cout << "Create Success!" << endl;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return true;
}
int main() {
const string name = "D:/Test/Image.exe";
startProcess(name);
return 0;
}
lpApplicationName:NULL 表示命令列包含完整路徑。lpCommandLine:可修改的緩衝區(故需 (LPSTR)name.c_str())。bInheritHandles:FALSE 不繼承控制代碼。dwCreationFlags:0 或 CREATE_NEW_CONSOLE 等。失敗時呼叫 GetLastError() 取得錯誤碼(如 ERROR_FILE_NOT_FOUND、ERROR_ACCESS_DENIED)。