获取文件正被哪一程序占用

Bullatus 2008-10-14 10:54:42
当文件被某一程序占用时,就无法对其进行读写操作了。
我现在想要获取指定文件正被哪一个程序占用着(获取占用程序的路径和进程信息)
这个需要怎么实现啊?
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
true_guowei 2008-10-15
  • 打赏
  • 举报
回复
这个问题我以前搞过,不过思路不是这样搞的。

解释一下:因为没有windows Api可以提供这个功能。因此,这种能力需要用到驱动程序。
我用的是一个dw级别的驱动:dwFile。用这个监视每个文件的打开操作,就是监视dwCreatefile函数。并且记录。
驱动内部实现是很复杂的,牵扯转换很多东东。我只负责调用。

我判断,没有普通的办法可以实现这个的。
Bullatus 2008-10-15
  • 打赏
  • 举报
回复
如果真的那么复杂,我还是直接提示“程序被占用”吧!
Forrest23 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bunliney 的回复:]
这个方法好像不行吧。
如果我的另一个程序使用Stream来读写一个文件,而窗体标题却保持不变呢?
[/Quote]

这个方法是不太对,期待高手解答
Bullatus 2008-10-14
  • 打赏
  • 举报
回复
这个方法好像不行吧。
如果我的另一个程序使用Stream来读写一个文件,而窗体标题却保持不变呢?
Forrest23 2008-10-14
  • 打赏
  • 举报
回复
Dim sProcesses() As System.Diagnostics.Process
Dim sProcess As System.Diagnostics.Process
sProcesses = System.Diagnostics.Process.GetProcesses()
For Each sProcess In sProcesses
If sProcess.MainWindowTitle.ToString.Trim.Contains("1.JPG") Then
MsgBox(sProcess.Id & Space(5) & sProcess.ProcessName & Space(10) & sProcess.NonpagedSystemMemorySize64)
End If
Next
判断1.jpg被哪个进程使用
一点不成熟的想法
Forrest23 2008-10-14
  • 打赏
  • 举报
回复
帮顶~
Bullatus 2008-10-14
  • 打赏
  • 举报
回复
知道的帮帮忙啊

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧