下一篇:句柄详情
看这些东西你得会c的结构体以及指针,不然你是看天书的
直接上原函数
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information);
看着确实有点恐怖,但是看过上一篇的基本都知道咋回事,按住ctrl鼠标点进去就知道咋回事了,
本篇介绍3个参数,第一个执行模块的名字,倒数第二个启动信息,最后一个进程信息,
第一个参数:一干到底点进来是个wchar指针的,其实就是程序的路径,这样即可倒数第二si:这两个是必须的参数,单数可以不给值,所以弄个结构体变量就行,结构体原型是这,我也没搞清楚参数有啥用
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
倒数第三个pi:这是一个out参数,也就是说是输出的参数,只能取不能传,随意改动pid和线程ip显然不正常id也是唯一标识的,原型是以下结构体,进程线程id和进程线程句柄(下节讲句柄)
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION;
写好启动信息和进程信息的结构体,可以随便给几个值玩玩,突然发现有点像python,
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwX = 1;
si.dwY = 1;
pi.dwProcessId = 1;
最终写好参数就可以用这个启动那个程序的进程了
下一篇讲讲其他参数
下一篇:句柄详情