我在用shellexecute启动一个exe程序
接着用movefile函数对文件进行操作
ShellExecute(this->m_hWnd,"open","A.exe",
ExecutePara,Path,SW_SHOW);
//Sleep(2000);
if(MoveFile(Path+"11.pdf",GetFileAddValue+"11.pdf"))
AfxMessageBox("Move file ok");
else
AfxMessageBox("Move file fail");
我若中间加了sleep不会出错,但没有sleep就出错,是不是shell启动一个exe要耗时的原因呀(这个A.exe会会成11.pdf,然后剪切到getfileaddvalue下),要怎么改了,如果用sleep,要是碰到大的pdf文件,那不是sleep(2000)不够了,有没有判断shellexecute成功执行完的函数了?

解决方案 »

  1.   

    就 是"Move file fail"
      

  2.   

    A.exe完成后向主程序发一条消息就可以了。或者用笨办法, while(MoveFile()){sleep(1000);}
      

  3.   

    如果真的是A.exe延迟,可以加个while循环CFindFile判断是否完成pdf的操作
      

  4.   

    你的a.exe是一个任意的应用程序都行么?还是说你的a.exe和那个.pdf的文件是有关联的?你在打开a.exe的时候,那个程序内部获得了.pdf文件的句柄,会导致文件无法移动。
      

  5.   

    换换其他思路
      CreateProcess()
      WaitForInputIdle()