首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

让人晕倒的XP,使用createprocess打开cmd进程,无法在这个进程中打开带窗口的应用程序解决思路

2013-01-25 
让人晕倒的XP,使用createprocess打开cmd进程,无法在这个进程中打开带窗口的应用程序本帖最后由 VisualElev

让人晕倒的XP,使用createprocess打开cmd进程,无法在这个进程中打开带窗口的应用程序
本帖最后由 VisualEleven 于 2012-12-20 17:58:43 编辑 我使用双匿名管道createpipe和createprocess创建了一个cmd进程,在xp下测试时发现,我发送regedit,osk等一些带窗体的程序时,无法打开窗口,其他windows命令都很正常。我使用进程查看工具查看在cmd的下级有打开的regedit.exe子进程,但是就是看不到打开的窗口,如果说多执行几次同样的命令有可能会打开一个窗口。但是会有多个相同的子进程打开,在内存中驻留,在桌面上看不到窗口。
    我在win7下测试时,什么命令执行都很正常,打开一个带窗口的命令时,很快就可以打开。
不知道原因,请高手解答。
附加打开进程的语句:


SECURITY_ATTRIBUTES  sa = {0};  
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL; 
sa.bInheritHandle = TRUE;
STARTUPINFO          si = {0};
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);

si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.hStdInput  = m_hInput_Rd_Handle;
si.hStdOutput = si.hStdError = m_hOutput_Wr_Shell; 

GetSystemDirectory(strShellPath, MAX_PATH);
strcat_s(strShellPath,MAX_PATH,"\\cmd.exe");

CreateProcess(strShellPath, NULL, &sa, &sa, TRUE, 
NORMAL_PRIORITY_CLASS, (LPVOID)/*chNewEnv*/NULL, strCurrentPath, &si, &pi)

[解决办法]
纯cmd下运行非控制台的win32程序,要用start命令的吧?

热点排行