zoukankan      html  css  js  c++  java
  • C++中执行windows指令

    执行windows指令:

    BOOL ExecDosCmd(char cmd[1024]) 
    {
        SECURITY_ATTRIBUTES sa; 
        HANDLE hRead,hWrite;
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.lpSecurityDescriptor = NULL;
        sa.bInheritHandle = TRUE;
        if (!CreatePipe(&hRead,&hWrite,&sa,0))
        {
            return FALSE;
        }
        char command[1024];//长达1K的命令行,够用了吧 
        strcpy(command,"Cmd.exe /C ");
        strcat(command,cmd);
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        si.cb = sizeof(STARTUPINFO);
        GetStartupInfo(&si);
        si.hStdError = hWrite;//把创建进程的标准错误输出重定向到管道输入
        si.hStdOutput = hWrite;//把创建进程的标准输出重定向到管道输入
        si.wShowWindow = SW_HIDE;
        si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        //关键步骤,CreateProcess函数参数意义请查阅MSDN 
        if (!CreateProcess(NULL, command,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
        { 
            CloseHandle(hWrite);
            CloseHandle(hRead); 
            return FALSE;
        }
        CloseHandle(hWrite);
        char buffer[4096] = {0};//用4K的空间来存储输出的内容,只要不是显示文件内容,一般情况下是够用了。
        DWORD bytesRead;
        while (true)
        { 
            if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
                break;
            //buffer中就是执行的结果,可以保存到文本,也可以直接输出 
        //    MessageBox(NULL, buffer, TEXT("结果"), MB_OK);
        }
        CloseHandle(hRead);
        return TRUE;
    }
  • 相关阅读:
    omnibus gitlab-ce安装
    Helm
    pod状态为Back-off
    我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
    云主机搭建Kubernetes 1.10集群
    Linux清除Windows密码
    Nginx负载均衡之健康检查
    MariaDB主从复制搭建
    Python基础
    Tomcat URL重写
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/5233515.html
Copyright © 2011-2022 走看看