VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 944|回复: 5

[已解决] CreateProcess不能成功创建CMD程序

[复制链接]
08_avatar_middle
在线会员 发表于 2015-10-6 13:13:48 | 显示全部楼层 |阅读模式
SECURITY_ATTRIBUTES sa;
        HANDLE hRead = NULL,hWrite = NULL;
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.lpSecurityDescriptor = NULL;
        sa.bInheritHandle = FALSE;
        if (!CreatePipe(&hRead,&hWrite,&sa,0))
        {
                return FALSE;
        }
    STARTUPINFO si = {sizeof(STARTUPINFO)};
        PROCESS_INFORMATION pi = {0};  
        // GetStartupInfo(&si);
        si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES ;
        si.wShowWindow = SW_SHOWNORMAL;
        si.hStdInput = hRead;            //把创建进程的标准错误输出重定向到管道输入
    si.hStdOutput = hWrite;           //把创建进程的标准输出重定向到管道输入
        char SystemName[100] = {0};
        GetSystemDirectory(SystemName,100);
        strcat(SystemName,"\\cmd.exe");
        //关键步骤,CreateProcess函数参数意义请查阅MSDN
        if (!CreateProcess(SystemName,NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))
        {
                MessageBox(NULL,"sss","sss",0);
                return 0;
        }
        return 0;




上一篇:像素值显示图片问题
下一篇:MFC icon 变灰
08_avatar_middle
ico_lz  楼主| 发表于 2015-10-6 13:16:06 | 显示全部楼层
关键是 si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES ; 这一句,这个STARTF_USESTDHANDLEs这个标志出的问题,如果去掉这个标志可以成功创建并显示cmd,可一添加就不能创建程序,cmd一闪而过,大神求帮我
08_avatar_middle
ico_lz  楼主| 发表于 2015-10-6 13:25:40 | 显示全部楼层
我懂了,因为没有 WaitForSingleObject
08_avatar_middle
ico_lz  楼主| 发表于 2015-10-6 18:41:20 | 显示全部楼层
错了,不是因为没有 WaitForSingleObject,是继承属性的问题,必须都设置成继承
51_avatar_middle
online_admins 发表于 2015-10-7 22:57:14 | 显示全部楼层
楼主解决了就好
80_avatar_middle
在线会员 发表于 2016-6-6 09:26:43 | 显示全部楼层
学习下~~
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-27 16:29

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表