проблема с открытым файлом слова и режимом только для чтения с использованием взаимодействия С# и MS-word

я программно открываю файл слова для поиска и выделения ключевого слова. моя рутина работает нормально. проблема в том, что когда я открываю файл программно, появляется диалоговое окно с просьбой открыть файл в режиме только для чтения. диалоговое окно выглядит так: введите здесь описание изображения

на самом деле я не хочу открывать файл в режиме только для чтения, потому что люди могут открывать и любят изменять и сохранять. поэтому подскажите, что я могу сделать, чтобы не открывать файл в режиме только для чтения.

вот мой полный код. просто посмотрите и скажите мне, что не так в моем коде, или расскажите мне какой-нибудь трюк, в результате я могу открыть файл не в режиме только для чтения. вот мой код.

private void button1_Click(object sender, EventArgs e)
        {
            object fileName = "";
            string filePath = "";
            string strSaveasPath = "";
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                fileName = openFileDialog1.FileName;
                //strSaveasPath = Path.GetDirectoryName(path.ToString()); 
            }



            //fileName = "Z:\\C0000000003.doc";
            List<string> _list = new List<string>();
            _list.Add("tridip");
            _list.Add("arijit");

            //object fileName = "D:\\CVArchievePath\\C0000000001.doc";
            object textToFind = "test";
            object readOnly = false;
            Word.Application word = new Word.Application();
            Word.Document doc = new Word.Document();
            object missing = Type.Missing;
            try
            {
                doc = word.Documents.Open(ref fileName, ref missing, ref readOnly,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing);
                doc.Activate();

                object matchPhrase = false;
                object matchCase = false;
                object matchPrefix = false;
                object matchSuffix = false;
                object matchWholeWord = false;
                object matchWildcards = false;
                object matchSoundsLike = false;
                object matchAllWordForms = false;
                object matchByte = false;
                object ignoreSpace = false;
                object ignorePunct = false;

                object highlightedColor = Word.WdColor.wdColorGreen;
                object textColor = Word.WdColor.wdColorLightOrange;

                object missingp = false;
                Word.Range range = doc.Range();

                foreach (string line in _list)
                {
                    textToFind = line;
                    bool highlighted = range.Find.HitHighlight(ref textToFind,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing);
                }

                System.Diagnostics.Process.Start(fileName.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : " + ex.Message);
                //Console.ReadKey(true);
            }
            finally
            {
                //doc.Close(missing, missing, missing);
                if(doc!=null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);

                if (word != null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(word);

                word = null;
                doc = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }


        }

person Mou    schedule 19.03.2013    source источник


Ответы (1)


Подскажите, что мне сделать, чтобы файл не открывался в режиме только для чтения

Ну, забудь пока код, он заблокирован, потому что открыт "tridip". Вы не можете писать в файл Word, который в данный момент открыт другим пользователем, поэтому этому пользователю придется его закрыть. Может быть, вы "тридип" и у вас уже открыт документ, который пытается открыть ваша программа???

person JohnZaj    schedule 07.04.2013