проблем относно отворен файл на Word и режим само за четене, използвайки взаимодействие на c# и 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, който в момента е отворен от друг потребител, така че този потребител ще трябва да го затвори. Може би сте "tridip" и вече имате отворен документ, който вашата програма се опитва да отвори???

person JohnZaj    schedule 07.04.2013