C# _lopen判断文件是否正在被使用
2012-03-20 21:09
555 查看
今天很无语,要解决一个问题,Silverlight中无法对用户打开的文件进行判断,是否打开,沙箱模式运作,出于安全性考虑,是无法获得
本地文件的绝对路径,无法调用API来判断实现这功能,最后还是用Trycatch来解决。
C#能够调用的API都能从以下网站查到:
API查询网站:http://www.webtropy.com/articles/Win32-API-DllImport-art9.asp
还是写下C# 调用系统API来实现文件判断效果:
1.命名空间:using System.Runtime.InteropServices
2. API函数 _lopen(string pathfile,int ireadwriter)
本地文件的绝对路径,无法调用API来判断实现这功能,最后还是用Trycatch来解决。
C#能够调用的API都能从以下网站查到:
API查询网站:http://www.webtropy.com/articles/Win32-API-DllImport-art9.asp
还是写下C# 调用系统API来实现文件判断效果:
1.命名空间:using System.Runtime.InteropServices
2. API函数 _lopen(string pathfile,int ireadwriter)
/// <summary> /// Description of UseAPI. /// </summary> public class UseAPI { public UseAPI() { } private const int OF_READWRITE = 2; private const int OF_SHARE_DENY_NONE = 0x40; private static readonly IntPtr HFILE_ERROR = new IntPtr(-1); /// <summary> /// 判断文件是否打开 /// </summary> /// <param name="lpPathName">文件名称</param> /// <param name="iReadWrite"></param> /// <returns></returns> [DllImport("kernel32.dll")] private static extern IntPtr _lopen(string lpPathName, int iReadWrite); /// <summary> /// 关闭文件句柄 /// </summary> /// <param name="hObject"></param> /// <returns></returns> [DllImport("kernel32.dll")] private static extern bool CloseHandle(IntPtr hObject); /// <summary> /// 文件名称 /// </summary> /// <param name="filename"></param> /// <returns></returns> public static string IsOpen(string filename) { IntPtr vHandle = _lopen(filename, OF_READWRITE | OF_SHARE_DENY_NONE); if (vHandle == HFILE_ERROR) { CloseHandle(vHandle); return "文件被占用!"; } else return "没有被占用!"; //CloseHandle(vHandle); } }
相关文章推荐
- C# _lopen判断文件是否正在被使用
- c# 判断一个文件是否正在被使用
- C# 判断一个文件是否正在被使用。
- C# 判断一个文件是否正在被使用。
- C# 判断文件是否正在被使用
- C# 判断文件是否正在被使用
- C#判断文件是否正在被使用
- C# 如何判断指定文件是否正被其它程序使用
- Delphi判断文件是否正在被使用
- 如何判断一个文件是否正在被使用
- C#判断文件是否存在和文件夹是否存在(Windows Mobile上可以使用)
- 判断文件是否正在被使用
- linux下判断一个文件是否正在被使用
- Delphi判断文件是否正在被使用
- 判断一个文件是否正在被使用
- Delphi判断文件是否正在被使用
- Delphi判断文件是否正在被使用
- C# 检查文件是否正在使用
- Delphi判断文件是否正在被使用
- 判断文件是否正在被使用的JS代码