代码之家  ›  专栏  ›  技术社区  ›  Thiyaneshwaran S

Word正在试图恢复

  •  0
  • Thiyaneshwaran S  · 技术社区  · 14 年前

    我们目前正在c程序中处理大字文档。 在处理过程中,我收到消息“Microsoft Windows已停止工作”。

    问题的原因是什么?这是因为word文档的创建、打开和关闭如此频繁吗?

    1) 将文档中注释引用的内容复制到剪贴板

        comment.Scope.CopyAsPicture();
    

        public String _GetContentFromClipboard()
        {
            String text = "";
            if (Clipboard.GetData(DataFormats.Html) != null)
            {
                text = Clipboard.GetData(DataFormats.Html).ToString();
            }
            else
            {
                IDataObject iData = Clipboard.GetDataObject();
                if (iData.GetDataPresent(DataFormats.Bitmap))
                {
                    Image image = iData.GetData(DataFormats.Bitmap, true) as Image;
                    String imageFile = Guid.NewGuid().ToString() + ".jpg";
                    image.Save(imageFile, System.Drawing.Imaging.ImageFormat.Jpeg);
                    text = "<img src=\"" + imageFile + "\" width=\"" + image.Width + "\" height=\"" + image.Height + "\" />";
                }
            }
            return text;
        }
    

    3) 有时还将剪贴板中的内容保存到新的word文档中

        public String SaveClipboardContentToDoc(bool removeComments)
        {
            Object docName = GeneralUtil.GetTempFileWithoutExtension() + ".docx";
            Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
    
            Microsoft.Office.Interop.Word.Document oDoc = new Microsoft.Office.Interop.Word.Document();
    
            oDoc = oWord.Documents.Add(ref missingObj, ref missingObj, ref missingObj, ref missingObj);
            oWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
            oWord.Visible = false;
            oDoc.ActiveWindow.Selection.Paste();
            if (removeComments == true)
            {
                foreach (Comment selectionComment in oDoc.Comments)
                {
                    selectionComment.Delete();
                }
            }
            oDoc.SaveAs(ref docName, ref missingObj,
                        ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj,
                        ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj,
                        ref missingObj, ref missingObj, ref missingObj, ref missingObj);
            ((Microsoft.Office.Interop.Word._Document)oDoc).Close(ref missingObj, ref missingObj, ref missingObj);
            ((Microsoft.Office.Interop.Word._Application)oWord).Quit(ref missingObj, ref missingObj, ref missingObj);
            return docName.ToString();
        }
    

    "Microsoft Windows has stopped working"
    Windows can check online for a solution to the problem and try to recover your information.
    Check online for a solution and close the program
    close the program
    Debug the program
    
    Then clicking on debug leads to " "An unhandled win32 execption occurred in WINWORD.EXE [7372]"
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Hans Passant    14 年前

    好吧,你的密码轰炸词。这种情况并不常见,但Word是一个相当庞大的野兽,可能包含了数千个尚未被发现的bug。你不会从异常本身得到任何帮助,它发生在核心代码中。即使你有Word的源代码,你可能仍然有很长的时间去找出到底哪里出错了。

    支持Word,您可以致电Microsoft支持。在你经历了外部的支持层之后,你最终会得到一个支持工程师来处理你的问题,他对这个词很熟悉,并且可以诊断出原因。为了通过这些外层,你有一个好的复制品是非常重要的。最简单的程序可以触发任何机器的崩溃。一旦你拿到了,准备好信用卡并打电话给他们。他们会给你一个上传复制代码的网址。确保与他们保持联系,因为你的案件跨越了支持级别,你需要积极主动,以确保他们留在案件。如果需要一路走下去,那就指望几个星期吧。如果他们认为这是Word中的bug而不是代码中的bug,你就可以拿回你的钱。

    Fwiw,在得到简单的复制工作通常是一个很好的方式来找出什么,如果有的话,是你的代码错误。祝你好运。

    推荐文章