В настоящее время я использую этот код, чтобы получить список MS Word открытых документов:C# Получить список открытых документов Word,
List<string> doc_list = new List<string>();
try
{
Microsoft.Office.Interop.Word.Application WordObj;
WordObj = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
for (int i = 0; i < WordObj.Windows.Count; i++)
{
object idx = i + 1;
Window WinObj = WordObj.Windows.get_Item(ref idx);
doc_list.Add(WinObj.Document.FullName);
}
}
catch
{
// No documents opened
}
И это работает правильно, если документы были открыты «напрямую», т.е. дважды щелкнув по ним. Однако я заметил, что если я открыть документ MS Word непосредственно из C# код, как:
Microsoft.Office.Interop.Word.Application word_app = new Microsoft.Office.Interop.Word.Application();
object inputFile = selected_doc; // "selected_doc" contains the document name
object confirmConversions = false;
object readOnly = false;
object visible = true;
object missing = Type.Missing;
Document doc = word_app.Documents.Open(
ref inputFile, ref confirmConversions, ref readOnly, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref visible,
ref missing, ref missing, ref missing, ref missing);
любой документ, открытый в этом случае не найден в intial кода, но мне нужно, чтобы обнаружить его. Почему это не найдено? Как я могу изменить код, чтобы документ, открытый с C#, был найден?
нормально, я понимаю, большое спасибо, это работает – yuko