using System.IO; using System.Runtime.InteropServices; namespace DarkBlue.FileOccupied { public sta class FileHlper { [DllImport("kernel32.dll")] public static extern IntPtr _lopen(string lpPathName, int iReadWrite); [DllImport("kernel32.dll")] public static extern bool CloseHandle(IntPtr hObject); public const int OF_READWRITE = 2; public const int OF_SHARE_DENY_NONE = 0x40; public readonly IntPtr HFILE_ERROR = new IntPtr(-1); public bool IsOccupied(string fileFullNmae) { if (!File.Exists(fileFullNmae)) return false; IntPtr vHandle = _lopen(fileFullNmae, OF_READWRITE | OF_SHARE_DENY_NONE); var flag = vHandle == HFILE_ERROR; CloseHandle(vHandle); return flag; } } }