要解决的问题:打开FTP服务器上的一个文件
目前采用的解决方法:先下载到本地,然后用shellExecute方法打开,然后删除文件。现在碰到的问题是:文件下载到本地,用shellExecute打开之后,需要删除掉文件。但是因为shellExecute方法是调用外部程序进行的文件打开,所以我无法判断用户是否已经关闭了文件,删除文件的代码我应该写在哪里,怎么写,才能保证用户在关闭了外部程序之后,把文件马上删除掉PS:文件类型不固定,可以是任何类型的。
现在的程序是:
shellExecute
删除文件方法  本来我以为是在shellExecute调用的外部程序关闭后才调用“删除文件方法”,但是程序在执行到shellExecute之后,马上就执行了“删除文件方法”,我想在外部程序关闭后才执行“删除文件方法”。

解决方案 »

  1.   

    判断一个文件是否打开:function IsFileInUse(FileName: TFileName): Boolean;
    var
        HFileRes: HFILE;
    begin
        Result := False;
        if not FileExists(FileName) then Exit;
        HFileRes := CreateFile(PChar(FileName),
            GENERIC_READ or GENERIC_WRITE,
            0,
            nil,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            0);
        Result := (HFileRes = INVALID_HANDLE_VALUE);
        if not Result then
            CloseHandle(HFileRes);
    end;
      

  2.   

    这个好象也可以用的
    if FindWindow('fileName','')<>0   then   showmessage('窗体在内存中'); 
    等于0的时候就删除它。