C# 检查文件是否被进程占用

        [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);
        private void CheckFile(string filepath)
        {
            string vFileName = filepath;
            if (!File.Exists(vFileName))
            {
                MessageBox.Show("文件都不存在");
                return;
            }
            IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
            if (vHandle == HFILE_ERROR)
            {
                MessageBox.Show("文件被占用!");
                return;
               
            }
            CloseHandle(vHandle);
            MessageBox.Show("没有被占用!");
        }

posted @ 2013-10-14 09:23  积极的码农  阅读(1383)  评论(0编辑  收藏  举报