windows api学习笔记-创建进程
#include//系统会自动连接到指定的库文件lib #include #include //std io 标准输入输出接口 #include using namespace std; int main() { char szCommandLine[] = "cmd"; STARTUPINFO si = {sizeof(si)};// PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效 si.wShowWindow = TRUE;//显示新进程的主窗口 BOOL bRet = ::CreateProcess( NULL,//不在此指定可执行文件的文件名 szCommandLine,//命令行参数,包含执行什么可执行文件 NULL,//默认进程安全性 NULL,//默认线程安全性 FALSE,//当前进程内的句柄不可以被子进程继承 CREATE_NEW_CONSOLE, NULL,//使用本进程的环境变量 NULL,//使用本进程的驱动器和目录 &si,//新进程中主窗口的位置,大小和标准句柄 &pi //返回新进程的信息,如ID号句柄等 ); if(bRet) { //不使用两个返回的句柄最好把他关闭掉,要不然占有系统资源 ::CloseHandle(pi.hThread); ::CloseHandle(pi.hProcess); printf("新进程的ID号:%d\n",pi.dwProcessId); printf("新进程的主线程的ID号:%d\n",pi.dwThreadId); } char a; cin>>a; return 0; }
其中
STARTUPINFO si = {sizeof(si)};//
这一句可以替换成:
STARTUPINFO si;
::ZeroMemory(&si,sizeof(si));
si.cb = sizeof(si);