• 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;
    }
  • 相关阅读:
    画架构图
    做产品的方方面面
    Tomcat一个有意思的漏洞
    LinkedHashMap 作为一个 CacheMap
    Maven提高篇系列之五——处理依赖冲突
    javaweb获取项目路径的方法
    curl工具介绍和常用命令
    Spring事务管理(详解+实例)
    如何更好地使用Java 8的Optional
    input的type=file触发的相关事件
  • 原文地址:https://www.cnblogs.com/wangzhigang/p/5233515.html
Copyright © 2020-2023  润新知