在计算机中分离 Microsoft.Office.Interop.Word 个实例和 Word 应用程序
Separate Microsoft.Office.Interop.Word instance and Word app in machine
在我的应用程序中,我想通过
使用 Microsoft Word
Microsoft.Office.Interop.Word
Microsoft.Office.Interop.Word.Application _wordApplication
= new Microsoft.Office.Interop.Word.Application();
this._wordApplication.Documents.Add();
object _readOnly;
object _addToRecentFiles;
object _confirmConversion;
object _trueValue;
object _falseValue;
object _visible;
object _nullObj;
object fileName = @"C:/FileName.doc";
var doc = _wordApplication.Documents.Open(ref fileName, ref _confirmConversion, ref _readOnly, ref _addToRecentFiles,
_oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _visible, _oMissing,
_oMissing, _oMissing, _oMissing);
我想将我机器上的单词应用程序和我的解决方案中的单词分开,因为如果我通过以下步骤修改机器上的单词应用程序
View > Read Mode
并关闭单词应用
然后
我在我的解决方案中打开这个词 >> 这个词将在
中打开
Read Mode not Print layout mode
所以我的问题是如何在我的解决方案中区分 Word 应用程序和 word 实例
我希望我的解决方案中的任何更改都不会影响我机器中的 Microsoft Office Word,反之亦然
由于 Word 在注册表(以及 Normal.dotm
模板中的其他设置)中存储许多设置值的方式,在单个 用户配置文件 键下,它不是可以选择或更改 Word 应用程序在退出时保存的内容,无论设置更改是由用户还是代码进行的。此行为是设计使然,无法进行不同的配置。
保持完全独立环境的唯一方法是 运行 不同用户配置文件下的 "interop" 版本。
除此之外,为了确保 "interop" 环境 运行 具有与最终用户环境不同的设置,"interop" 代码需要注意每个关注的设置它开始时,将这些设置更改为其自身所需的设置,并在结束时重置为 "interop" 启动时保存的设置。
可能会在 "Safe Mode" 中启动 Word 进程,这将 运行 Word 使用安装默认值,但这仍然意味着在实例启动时创建设置。而且,根据代码的作用,可能还有其他 limitations/problems 涉及在安全模式下工作。
理论上,另一种方法是保存设置注册表项 - 我记得有多个键存储设置,用具有所需的键替换它们设置,启动 "interop" 实例,然后在 "interop" 结束时反转过程。这本质上就是第一种方法所做的,并且可能 运行 在没有管理员权限的最终用户环境中出现问题,所以我只是为了完整起见才提到它。
在我的应用程序中,我想通过
使用 Microsoft WordMicrosoft.Office.Interop.Word
Microsoft.Office.Interop.Word.Application _wordApplication
= new Microsoft.Office.Interop.Word.Application();
this._wordApplication.Documents.Add();
object _readOnly;
object _addToRecentFiles;
object _confirmConversion;
object _trueValue;
object _falseValue;
object _visible;
object _nullObj;
object fileName = @"C:/FileName.doc";
var doc = _wordApplication.Documents.Open(ref fileName, ref _confirmConversion, ref _readOnly, ref _addToRecentFiles,
_oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _visible, _oMissing,
_oMissing, _oMissing, _oMissing);
我想将我机器上的单词应用程序和我的解决方案中的单词分开,因为如果我通过以下步骤修改机器上的单词应用程序
View > Read Mode
并关闭单词应用 然后 我在我的解决方案中打开这个词 >> 这个词将在
中打开Read Mode not Print layout mode
所以我的问题是如何在我的解决方案中区分 Word 应用程序和 word 实例 我希望我的解决方案中的任何更改都不会影响我机器中的 Microsoft Office Word,反之亦然
由于 Word 在注册表(以及 Normal.dotm
模板中的其他设置)中存储许多设置值的方式,在单个 用户配置文件 键下,它不是可以选择或更改 Word 应用程序在退出时保存的内容,无论设置更改是由用户还是代码进行的。此行为是设计使然,无法进行不同的配置。
保持完全独立环境的唯一方法是 运行 不同用户配置文件下的 "interop" 版本。
除此之外,为了确保 "interop" 环境 运行 具有与最终用户环境不同的设置,"interop" 代码需要注意每个关注的设置它开始时,将这些设置更改为其自身所需的设置,并在结束时重置为 "interop" 启动时保存的设置。
可能会在 "Safe Mode" 中启动 Word 进程,这将 运行 Word 使用安装默认值,但这仍然意味着在实例启动时创建设置。而且,根据代码的作用,可能还有其他 limitations/problems 涉及在安全模式下工作。
理论上,另一种方法是保存设置注册表项 - 我记得有多个键存储设置,用具有所需的键替换它们设置,启动 "interop" 实例,然后在 "interop" 结束时反转过程。这本质上就是第一种方法所做的,并且可能 运行 在没有管理员权限的最终用户环境中出现问题,所以我只是为了完整起见才提到它。