Windowsの任意のプロセスでファイルが開かれているかどうかを検出する簡単な方法はありますか?ファイルがWindowsで開かれているかどうかをプログラムで検出するにはどうすればよいですか?
たとえば、私はディレクトリを監視しており、ファイルがディレクトリに置かれている場合、これらのファイルに対していくつかの処理を実行したいと考えています。
ファイルがまだディレクトリにコピーされている場合、またはこれらのファイルの内容がまだ更新されている場合、これらの操作は実行しません。
ファイル名を指定すると、IsFileOpenedAnywhereElseInAnyProcess(const PathName: string): Boolean
などの関数を実装して、true
またはfalse
のいずれかを返したいと考えています。
私は考えることができる方法の一つは、ファイルの名前を変更することで、名前の変更が成功した場合、他のプロセスがそうのように、私はに興味がファイルを開いていない:
function IsFileOpenedAnywhereElseInAnyProcess(const PathName: string): Boolean;
begin
Result := not (MoveFileEx(PathName, PathName+'.BLAH', 0) and MoveFileEx(PathName+'.BLAH', PathName, 0));
end;
ロジックファイルを(別の拡張子に)名前を変更して名前を変更することができれば、他のプロセス(チェック時には)で開くことはできません。
ありがとうございました。
C++、C#を使用していますか? –