C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 開いたファイルのフォルダー名の変更


(過去ログ 170 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■98162 / inTopicNo.1)  開いたファイルのフォルダー名の変更
  
□投稿者/ バーガー (1回)-(2021/10/03(Sun) 13:48:12)

分類:[.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

を実行すると、フォルダー

ファイルが別のプロセスで使用されているため、プロセスはファイルにアクセスできません。

というエラーが出て、フォルダー名を変更することができません。

どうもダブルクリックした時に
ファイルにはアクセスしていないが、フォルダーにはアクセスした状態になっているのではないかと
考えています。

どのようにすれば、フォルダーへのアクセスを解除することができますか?




引用返信 編集キー/
■98163 / inTopicNo.2)  Re[1]: 開いたファイルのフォルダー名の変更
□投稿者/ Azulean (1205回)-(2021/10/03(Sun) 14:54:07)
No98162 (バーガー さん) に返信
> どうもダブルクリックした時に
> ファイルにはアクセスしていないが、フォルダーにはアクセスした状態になっているのではないかと
> 考えています。

ダブルクリックして関連付け起動した場合の話ですね?
その場合、そのファイルのあるフォルダーに「カレントディレクトリ」(作業フォルダーと呼ばれることもある)が設定されているので、「使用中」扱いになります。

カレントディレクトリを変更すると良いでしょう。
https://dobon.net/vb/dotnet/file/currentdirectory.html

※他にファイルが開いていないことが前提。
※エクスプローラー側がサムネイル生成中など、タイミング次第では頑張っても対処できないタイミングはあるかもしれません。
引用返信 編集キー/
■98164 / inTopicNo.3)  Re[2]: 開いたファイルのフォルダー名の変更
□投稿者/ バーガー (2回)-(2021/10/03(Sun) 16:04:17)
解決しました!!!
ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -