21xrx.com
2024-11-25 05:10:30 Monday
登录
文章检索 我的文章 写文章
如何使用C++执行CMD命令
2023-07-03 00:11:51 深夜i     --     --
C++ CMD命令 执行 system函数 输出结果

要使用C++执行CMD命令,您需要使用Windows API中定义的一组函数。这些函数允许您与操作系统进行交互,并且可以使用C++编写的代码来执行CMD命令并获取其输出。

首先,您需要使用Windows API中的CreateProcess函数来创建一个新的进程,该进程将运行CMD命令。以下是一个示例代码:


#include <windows.h>

int main()

{

  STARTUPINFO si;

  PROCESS_INFORMATION pi;

  ZeroMemory(&si, sizeof(si));

  si.cb = sizeof(si);

  ZeroMemory(&pi, sizeof(pi));

  if (!CreateProcess(NULL, "cmd.exe /c dir", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))

  {

    printf("CreateProcess failed (%d).\n", GetLastError());

    return 1;

  }

  // Wait until child process exits.

  WaitForSingleObject(pi.hProcess, INFINITE);

  // Close process and thread handles.

  CloseHandle(pi.hProcess);

  CloseHandle(pi.hThread);

  return 0;

}

在上面的代码中,CreateProcess函数被调用来创建一个新的进程。该进程将执行cmd.exe程序,并运行dir命令。cmd.exe程序是Windows命令提示符的命令行界面。

本例中,CreateProcess函数的第一个参数为NULL,表示使用当前进程的路径作为进程的可执行文件路径,第二个参数为“cmd.exe /c dir”,表示要执行的CMD命令。

如果CreateProcess函数执行成功,它将返回0,表示进程启动成功。如果失败,则会返回错误代码,可以使用GetLastError函数获取错误代码。

在CreateProcess函数中,传递了参数si和pi,这是分别为STARTUPINFO和PROCESS_INFORMATION类型结构体的指针。这两个结构体用于在API调用中传递进程的启动信息和句柄。在CreateProcess函数中使用ZeroMemory函数初始化这些结构体。

一旦CMD命令执行完成,它的输出可以通过标准输出流捕获。为此,在CreateProcess函数的第四个参数中传递一个SECURITY_ATTRIBUTES结构体的指针,该结构体包含一个用于捕获标准输出的文件句柄。要获取输出,请使用ReadFile函数读取输出流。

现在,您已经知道了如何使用C++执行CMD命令。这不仅可以帮助您自动化Windows操作系统中的进程,还可以作为一个有用的调试工具来使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复