一、方式1: system
#include <stdlib.h> system("ping 127.0.0.1");
阻塞等待程序执行完再退出.
#include<windows.h> #include<shellapi.h> #include<stdio.h> #include<string.h> WinExec("ping 127.0.0.1", SW_SHOWNOACTIVATE);
调用完立即返回。
#include<windows.h> #include<shellapi.h> #include<stdio.h> #include<string.h> STARTUPINFO si; PROCESS_INFORMATION pi; LPTSTR szCmdline=_wcsdup(TEXT("ping 127.0.0.1")); ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效 si.wShowWindow = TRUE; // FALSE,此成员设为TRUE的话则显示新建进程的主窗口 BOOL bRet = CreateProcess( NULL, // 不在此指定可执行文件的文件名 szCmdline,// 命令行参数 NULL, // 默认进程安全性 NULL, // 默认进程安全性 FALSE, // 指定当前进程内句柄不可以被子进程继承 CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口 NULL, // 使用本进程的环境变量 NULL, // 使用本进程的驱动器和目录 &si, &pi); if (bRet) { WaitForSingleObject( pi.hProcess, INFINITE ); // 不使用的句柄最好关掉 CloseHandle(pi.hThread); CloseHandle(pi.hProcess); qDebug("新进程的ID号:%d\n", pi.dwProcessId); qDebug("新进程的主线程ID号:%d\n", pi.dwThreadId); }
功能更加强大,可以隐藏控制台弹窗,可以等待进程执行完毕。