|
分類:[.NET 全般]
VB.NETを使って、
エクスプローラー上でファイルをダブルクリックすることで開くことができる
画像ビューアを開発しています。
その画像ビューア内で開いたファイルのファイル名やペアレントフォルダー名の変更を行いたいと考えています。
既にプログラムに画像ファイルを関連付けされた状態で
ファイルをダブルクリックするとプログラムを自動で開くことができます。
そして
Dim files() As String = My.Application.CommandLineArgs.ToArray()
を使って、開いたファイルのパスを取得することができます。
元のファイルが
Dim FilePath1 = "E:\新しいフォルダー\aaa\123.jpg"
に入っているとして、
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim FilePath1 = "E:\新しいフォルダー\aaa\123.jpg"
Dim FilePath2 = "E:\新しいフォルダー\aaa\123-2.jpg"
File.Move(FilePath1, FilePath2)
End Sub
を実行するとうまくファイル名を変更することができます。
一方で、
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim ParentFolder1 = "E:\新しいフォルダー\aaa"
Dim ParentFolder2 = "E:\新しいフォルダー\aaa22"
Directory.Move(ParentFolder1, ParentFolder2)
End Sub
を実行すると、フォルダー
ファイルが別のプロセスで使用されているため、プロセスはファイルにアクセスできません。
というエラーが出て、フォルダー名を変更することができません。
どうもダブルクリックした時に
ファイルにはアクセスしていないが、フォルダーにはアクセスした状態になっているのではないかと
考えています。
どのようにすれば、フォルダーへのアクセスを解除することができますか?
|