遍历一个目录,看一个目录下到底有多少个子目录.我前面先做了很多动作(winexec...),然后,调用这个遍历递归,发现,生成的目录数就会少,而且,还是不确定的.有时少这个,有时少那个.但是,如果在执行完一些动作后,加入:Sleep(2000);
          然后,调用这个遍历递归, 生成的目录数就会正确.同样的,按一个button,然后,调用这个遍历递归, 生成的目录数也会正确.不知道为什么会出现这样的问题?
请各位帮忙!谢谢!

解决方案 »

  1.   

    我现在已经发现:
           因为之前的Code是:调用winexec("copy..", SW_HIDE)生成一些子目录.        紧接着,就调用"遍历递归"去统计子目录的个数.所以会出现子目录数少!因为"copy"有可能还没Run完.        那如何才晓得"copy"已经Run完了呢?
      

  2.   

    创建目录请用CreateDirectroy函数WinExec是为了兼容16位操作系统而保留的,最好不要调用。
      

  3.   

    因为功能的限制,必须调用“Xcopy”来生成一些子目录和文件。
    现在的问题点就是:
             Winexec("xcopy ...", SW_HIDE)以后,如何判断后台Dos程序运行结束( 多个进程在Run。)?
      

  4.   

    执行DOS命令
    STARTUPINFO si;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof STARTUPINFO;
    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    PROCESS_INFORMATION pi;
    BOOL res = CreateProcess(NULL,
    "xcopy ...", 
    NULL,
    NULL,
    NULL,
    NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
    NULL,
    NULL,
    &si,
    &pi);
    if (TRUE == res)
    {
    //等待进程执行完毕,再运行
    WaitForSingleObject(pi.hProcess, INFINITE);  
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    }
      

  5.   

    to  seu07201213(【东南】〖汪洋中的一片叶子〗)  根据你的Code,的确可以实现我要的功能。
    现在还有一问题想请教:
           怎么样才可以使运行的Dos窗口不可见!虽然你提到"si.wShowWindow = SW_HIDE;",但是我发现dos窗口依然可以看得到。不知道为什么?
      

  6.   

    如果:si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    Xcopy功能无效。如果:si.dwFlags = STARTF_USESHOWWINDOW;
    xcopy功能正确。不知道为什么?清楚该问题后,马上就结贴!麻烦大家告知!
      

  7.   

    helpless_girl(放飞心情) 
    你查一查STARTUPINFO 数据结构,可以设置io 句柄的也.
      

  8.   

    写了一段代码
    多给我点分好吗?我的分就剩2分啦,可怜可怜我吧
    HANDLE hWrite=INVALID_HANDLE_VALUE;
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    ZeroMemory(&si,sizeof(STARTUPINFO));
    si.hStdError = INVALID_HANDLE_VALUE;
    si.hStdOutput = INVALID_HANDLE_VALUE;
    si.hStdInput=INVALID_HANDLE_VALUE;
    si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
    si.wShowWindow=SW_HIDE;
    BOOL ret = CreateProcess(NULL,
    "help_helpless_girl.exe"
    ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);
      

  9.   

    回复不能超过3次,换个名进来还有关于你的贴子:
    如果:si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    Xcopy功能无效。如果:si.dwFlags = STARTF_USESHOWWINDOW;
    xcopy功能正确。不知道为什么?清楚该问题后,马上就结贴!麻烦大家告知!
    ---------------------------注意到重定向问题了吗? STARTF_USESTDHANDLES就是指定这个东西的
      

  10.   

    想要50分,好吗?给分时请给universee