让人晕倒的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命令的吧?