CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

如何判断是否有其它进程写某文件(急!!!)

楼主liangpei2008(笑青天)2006-03-28 21:55:03 在 Delphi / Windows SDK/API 提问

有一个文本文件A.txt,它内部的数据每一分钟被一个进程更新一次(也可以几分钟)  
  我想要的效果是:  
  该文件进行判断,如果某进程不占用该文件时,我就将其读写,占用时则等待.  
  问题点数:30、回复次数:4Top

1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2006-03-28 22:13:27 得分 15

Public   Function   IsFileInUse(ByVal   FileName   As   String)   As   Boolean  
        Dim   FileHandle   As   Long  
        On   Error   GoTo   ErrHandle  
         
        IsFileInUse   =   True  
         
        If   Not   FileExists(FileName)   Then  
              IsFileInUse   =   True  
              Exit   Function  
        End   If  
         
        FileHandle   =   CreateFile(FileName,   _  
                                                        GENERIC_READ   Or   _  
                                                        GENERIC_WRITE,   _  
                                                        0&,   _  
                                                        ByVal   0&,   _  
                                                        OPEN_EXISTING,   _  
                                                        FILE_ATTRIBUTE_ARCHIVE   Or   _  
                                                        FILE_ATTRIBUTE_HIDDEN   Or   _  
                                                        FILE_ATTRIBUTE_NORMAL   Or   _  
                                                        FILE_ATTRIBUTE_READONLY   Or   _  
                                                        FILE_ATTRIBUTE_READONLY   Or   _  
                                                        FILE_ATTRIBUTE_SYSTEM,   _  
                                                        0&   _  
                                                      )  
         
        If   FileHandle   =   -1   Then   Exit   Function  
         
        IsFileInUse   =   False  
         
        Call   CloseHandle(FileHandle)  
         
        Exit   Function  
  ErrHandle:  
        Err.Raise   Err.Number,   "IsFileInUse",   Err.Description  
  End   FunctionTop

2 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2006-03-28 22:14:02 得分 0

我晕,还以为是VB版.不过代码差不了多少,自己修改吧^_^Top

3 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-28 22:14:19 得分 5

你写之前把它Rename一下,如果成功的话说明没有进程占用,等你写完以后再把Name改回去,这样也可以防止其他进程访问。Top

4 楼simonhehe(流氓会武术,谁也挡不住)回复于 2006-04-30 17:23:07 得分 10

楼上正解Top

相关问题

  • 如何判断一个文件是否已经被别的进程使用?
  • Windows 下 怎么判断一个文件是否正在被其他进程使用
  • 在C#中我怎样判断一个文件当前是否正被别的进程使用?
  • 判断进程是否存在
  • 判断文件夹是否存在
  • 怎样判断文件是否存在?????
  • 如何判断文件是否存在!
  • 如何判断文件是否存在??
  • 如何判断文件是否存在?
  • 如何判断文件是否打开?

关键词

  • 文件
  • isfileinuse
  • 进程
  • filehandle
  • 占用
  • attribute
  • err
  • exit
  • filename
  • function

得分解答快速导航

  • 帖主:liangpei2008
  • unsigned
  • cuteant
  • simonhehe

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo