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;
    }
  • 相关阅读:
    SQL常规查询详解
    WEBGL学习【二】平面图形
    WEBGL学习【一】初识WEBGL
    VS2008集成QT的OpenGL开发(实现二维图形的旋转)
    Window文件路径
    字符串转DateTime
    字符串连接
    String.Split分隔字符串
    使用对象初始值设定项初始化
    表达式树
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/5233515.html
Copyright © 2011-2022 走看看