1,3  目測有用如果文件使用中,會跳入catch

解决方案 »

  1.   

    using System.IO;
    using System.Runtime.InteropServices;
    [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 button1_Click(object sender, EventArgs e)
    {
        string vFileName = @"c:\temp\temp.bmp";
        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("没有被占用!");
    }
      

  2.   

    谢谢两位,其实三种方法都是对的,只不过我上午检测的时候用的是Txt文件——当某文件被记事本打开后,程序根本不会锁定它,你可以将被打开的文件|Rename甚至Delete it。
    刚才俺用Word文件试了下,发现我列举的三种方法都管用,速度最快的是第一种办法,也就是楼上所说的。
    既是误解一场,这些分咱哥仨平分了吧。
      

  3.   

    确实是没有用,我就是要用txt文件,那怎么处理呢?