函数原型
BOOL WINAPI CreateProcess(
_In_opt_ LPCTSTR lpApplicationName,
_Inout_opt_ LPTSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCTSTR lpCurrentDirectory,
_In_ LPSTARTUPINFO lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
lpApplicationName
- 该参数指定新进程执行的可执行程序名称(xxx.exe).
- 如果该参数为
NULL
, 则可以根据第二个参数lpCommandLine
来指定可执行程序名称. - 需要注意的是
lpApplicationName
的类型为LPCTSTR
, 是一个常量字符串.
lpCommandLine
- 该参数指定新进程完整的命令行参数(xxx.exe para1 para2 para3).
- 当
CreateProcess
解析lpCommandLine
时, 会检查字符串中的第一个标记(第一个单词),如果没有指定.exe
扩展名, 就会默认为.exe
扩展名. - 需要注意的是
lpCommandLine
的类型为LPTSTR
, 是一个可变字符串.
lpProcessAttributes
- 该参数指定了新进程的进程内核对象句柄(在父进程中返回)是否可以继承.
lpThreadAttributes
- 该参数指定 了新进程的主线程内核对象句柄(在父进程中返回)是否可以继承.
代码示例
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
int _tmain()
{
TCHAR cmdLine[] = TEXT("NOTEPAD README.TXT ReadMe.TXT");
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcess(NULL, cmdLine, NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);
return 0;
}