gpt4 book ai didi

c# - 使用 MSWord 互操作的拼写检查窗口在我的 Vista 应用程序后面打开

转载 作者:行者123 更新时间:2023-11-30 18:10:33 26 4
gpt4 key购买 nike

我正在使用 MSWord 互操作来检查我的应用程序中的语法/拼写。我正在使用这些步骤来执行此操作:

  1. 创建一个新的单线程单元以不锁定我的应用程序的表单
  2. 禁用我的应用程序的输入
  3. 使用反射(与 MSOffice 版本无关)

我正在使用此代码打开 Word:

objWord = System.Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));
Object objDocuments = objWord.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, objWord, null);
objDoc = objDocuments.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objDocuments, null);
objContent = objDoc.GetType().InvokeMember("Content", BindingFlags.GetProperty, null, objDoc, null);

IDataObject oldObjData = Clipboard.GetDataObject();
Clipboard.SetDataObject(text);

objContent.GetType().InvokeMember("Paste", BindingFlags.InvokeMethod, null, objContent, null);

objDoc.GetType().GetMethod("CheckGrammar").Invoke(objDoc, null);
objWord.GetType().GetProperty("Visible").SetValue(objWord, false, null);
objContent.GetType().InvokeMember("Cut", BindingFlags.InvokeMethod, null, objContent, null);

IDataObject objData = Clipboard.GetDataObject();

objDoc.GetType().GetProperty("Saved").SetValue(objDoc, true, null);
objDoc.GetType().GetMethod("Close").Invoke(objDoc, new Object[] { null, null, null });
objWord.GetType().GetMethod("Quit").Invoke(objWord, new Object[] { null, null, null });

但是当我调用它时,只有在 Windows Vista 中,拼写检查窗口会在我的应用程序后面打开,我需要使用 ALT+TAB 来显示 Word 的窗口。

有人遇到过这个问题或有解决方法的建议吗?

我试着打电话

objDoc.GetType().GetMethod("Activate").Invoke(objDoc, null);

但它不起作用。其他“焦点”方法也不是。

谢谢

最佳答案

尝试在 Word 的 Application 对象上调用 Activate。 (不是 Document 对象)

编辑:尝试在显示拼写检查对话框之前调用它。

关于c# - 使用 MSWord 互操作的拼写检查窗口在我的 Vista 应用程序后面打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com