您的位置:首页 > 其它

获取已经打开的Excel进程中的文件资源属性

2007-12-17 19:10 344 查看
今天注册了blog,先来一篇简单实用的文章吧~

以前大家可能碰到过这样的需求,

要求程序检查.xls文件有没有被Excel打开着,我想很多朋友都会想到利用系统api.获得进程窗体的句柄等...

前面一段时间,正好碰到了这样需求,所以调查了一下,其实oledb公开了一些api,可供我们使用.

如代码

[DllImport("ole32.dll")]

public static extern int GetRunningObjectTable(int reserved, out IRunningObjectTable prot);

[DllImport("ole32.dll")]

public static extern int CreateBindCtx(int reserved, out IBindCtx ppbc);

private Hashtable GetRunningObjectTable()

private bool XlsIsOpen(string fileName)

{

bool XlsIsOpen = false;

Hashtable rot = GetRunningObjectTable();

bool isOk = false;

foreach (object o in rot.Values)

{

if (isOk)

{

break;

}

Excel.Application a = o as Excel.Application;

if (a != null)

{

Excel.Workbooks wbooks = a.Workbooks;

foreach (Excel.Workbook wb in wbooks)

{

if (wb.Name == fileName)

{

XlsIsOpen = true;

isOk = true;

break;

}

}

//a.DisplayAlerts = false;

//a.Quit();

}

}

return XlsIsOpen;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐