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;
    }
  • 相关阅读:
    input file 上传图片并显示
    关于npm ---- npm 命令行运行多个命令
    webpack4.x 配置
    React的生命周期
    HTML5 meta 属性整理
    css 命名规范
    html5 标签 meter 和 progress
    .NET Linq TO XML 操作XML
    .NET 字符串指定规则添加换行
    Linux Centos上部署ASP.NET网站
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/5233515.html
Copyright © 2011-2022 走看看