我在位于文件夹“test”的程序A中使用shellExecute来调用文件夹外部的程序B,并退出程序A,在程序B未关闭之前想要移动或者删除文件夹test都提示无法删除,有进程正在使用。
不知道大家了不了解我说的情况。
就是比如我现在运行 E:\test\A.exe ,A.exe中有一段代码是shellExecute调用了E:\B.exe,并且关闭自身程序。
现在是B.exe处于运行阶段,这个时候我要去删除test文件夹却无法删除,提示有进程正在使用。但是test文件夹中的内容却已经被删除了。请问我该如何处理,才能实现使用B程序来删除A程序的文件夹,并且要保证B程序是由A程序调用的。

解决方案 »

  1.   


    A在调用B后,就不出现A进程了。
      

  2.   

    ShellExecute函数原型及参数含义如下:   
    ShellExecute(   
    hWnd: HWND; {指定父窗口句柄}   
    Operation: PChar; {指定动作, 譬如: open、print}   
    FileName: PChar; {指定要打开的文件或程序}   
    Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}   
    Directory: PChar; {缺省目录}   
    ShowCmd: Integer {打开选项}   
    ): HINST; {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误} 建议用
    ShellExecute(NULL,"open","B.exe",NULL,NULL,SW_SHOWNORMAL); 试试。
      

  3.   

    删不掉的原因是 B.exe  的当前缺省目录是  E:\test解决的方法是, 调用B.exe 时 制定缺省目录为E:\
      

  4.   

    自问自答,可以结贴~
    转移缺省路径:SetCurrentDir()一切的一切,都只是这么一句话!