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;
    }
  • 相关阅读:
    流程控制语句
    VMware虚拟机与Linux Centos7下载及安装教程
    ReduceTask的运行
    Spark最简单基础_欢乐的马小纪
    虚拟机扩容
    centos安装docker
    kafka生产消费者demo
    虚拟机NAT网络
    Spark开发的完整基础_欢乐的马小纪
    centos6 克隆虚机的紧要知识点_____马小纪&
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/5233515.html
Copyright © 2011-2022 走看看