-2
私のvb.netアプリケーションでフォルダを調べて、古いアプリケーションがアプリケーションによって使用されているかどうかを知らせようとしています。使用中の場合、メッセージボックスが表示されます。私はVB.NET 2008、Express Editionでコーディングしています。 ...どうすればいいの?ありがとうVB内のディレクトリの他のプロセスで使用中のファイルがあるかどうかを検出します
私のvb.netアプリケーションでフォルダを調べて、古いアプリケーションがアプリケーションによって使用されているかどうかを知らせようとしています。使用中の場合、メッセージボックスが表示されます。私はVB.NET 2008、Express Editionでコーディングしています。 ...どうすればいいの?ありがとうVB内のディレクトリの他のプロセスで使用中のファイルがあるかどうかを検出します
ディレクトリ内のファイルを列挙して、提案されたソリューションを拡張することができます。
Imports System.IO
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
' Here you specify the given directory
Dim rootFolder As DirectoryInfo = New DirectoryInfo("C:\SomeDir")
' Then you enumerate all the files within this directory and its subdirectory
' See System.IO.SearchOption enum for more info
For Each file As FileInfo In rootFolder.EnumerateFiles("*.*", SearchOption.AllDirectories)
' Here you can call the method from the solution linked in Sachin's comment
IsFileOpen(file)
Next
End Sub
' Jeremy Thompson's code from here
Private Sub IsFileOpen(ByVal file As FileInfo)
Dim stream As FileStream = Nothing
Try
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
stream.Close()
Catch ex As Exception
If TypeOf ex Is IOException AndAlso IsFileLocked(ex) Then
' do something here, either close the file if you have a handle, show a msgbox, retry or as a last resort terminate the process - which could cause corruption and lose data
End If
End Try
End Sub
Private Function IsFileLocked(exception As Exception) As Boolean
Dim errorCode As Integer = Marshal.GetHRForException(exception) And ((1 << 16) - 1)
Return errorCode = 32 OrElse errorCode = 33
End Function
End Module
あなたはそれをgoogledしましたか?何か試してみましたか?あなたはSO自体で検索しましたか?重複:http://stackoverflow.com/a/11288781/1659563 – Sachin
私はそれを見ました。しかし、それは私のための全体の解決策ではありません。それは一部です。しかし、私はファイルの名前を知らずに、特定のディレクトリの各ファイルをチェックしたいと思っていて、開いているものがあれば例外のメッセージを表示します。 – dassoubarna