【问题标题】:C# How to stop user from using program created excel applicationC#如何阻止用户使用程序创建的excel应用程序
【发布时间】:2010-07-27 15:14:19
【问题描述】:

基本上我有一个用 C# 编写的程序,它使用 excel 应用程序。

在运行我的程序时,如果用户尝试打开任何 excel 文件,该文件将在我的程序创建的 excel 实例上打开。

我想这与 excel 打开现有实例有关 “Excel.exe”。

当我的程序退出时它会导致僵尸excel进程。

我想做的是隐藏我的 excel 实例不被用户使用。 (或任何其他解决方案)

我试图用谷歌搜索一些东西,但到目前为止什么都没有。

我的代码如下所示。

foreach (string strFileName in this.m_ListRequestFileNames)
{
    object misVal = System.Reflection.Missing.Value;
    try
    {
        if (Common.IsOpened(strFileName) == true)
        {
            this.m_ParentWnd.Log(strFileName + " is in use by another program." + Environment.NewLine);
            continue;
        }
        this.m_xlWBook = this.m_xlApp.Workbooks.Open(strFileName, 3, true, misVal, misVal, misVal, misVal, misVal, misVal, false, misVal, misVal, misVal, misVal, misVal);
        if (Make(ref m_xlWBook, m_strDstPath, ref m_ListIgnoreSheetNames) != true)
        {
            this.m_ParentWnd.Log("-!- Error while making " + m_xlWBook.Name + " into a csv file" + Environment.NewLine);
            continue;
        }
        this.m_ParentWnd.Log("Completed " + m_xlWBook.Name + Environment.NewLine);
    }
    catch (System.Exception e)
    {
        m_ParentWnd.Log(e.ToString());
    }
    this.m_xlWBook.Close(false, null, null);
}
this.m_xlApp.Quit();
Common.releaseObject(this.m_xlApp);

【问题讨论】:

  • 这是在服务器上运行的网络应用还是桌面客户端应用?

标签: c# excel


【解决方案1】:

至少从我从您的代码中看到的问题是,您在完成后没有关闭 Excel (app.Quit) - 如果是,您可能没有处理您创建的对象。使用 Excel 互操作,您将摆脱愉快的垃圾收集,您必须小心自己清理。一个被遗忘的小实例将使 Excel 在后台运行,并带有您描述的烦人的副作用。查看这个 StackOverflow 线程,了解关于此的广泛讨论: How do I properly clean up Excel interop objects?

【讨论】:

  • 非常感谢!我在没有退出()的情况下释放了 com 对象;。它解决了我的僵尸进程问题。但是有没有办法阻止用户访问我的 c# 程序创建的 excel 实例?非常感谢。
猜你喜欢
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2012-07-12
  • 2013-03-26
  • 2019-05-18
  • 2015-04-21
相关资源
最近更新 更多