مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

marziegh

عضویت از 1395/09/06

اجرای دستور Ctrl+Q در فایل exe ران شده توسط C#

  • شنبه 6 آذر 1395
  • 20:00
تشکر میکنم

سلام. من یه برنامه اجرایی رو با سی شارپ باز میکنم و میخوام روی این برنامه ی باز شده توسط سی شارپ Ctrl+F رو اجرا کنم تا یه صفحه تو اون برنامه باز بشه . میشه لطفا کمک کنید بهم. مثلا تو محیط سی شارپ office رو باز کنم و برای باز شدن صفحه ی find  دستور Ctrl+F رو اجرا کنم.  ممنون.

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • یکشنبه 7 آذر 1395
  • 10:17

کد سی شارپ زیر را داخل کلاس فرم مورد نظر خودتان کپی کنید. می توانید برای هر کلید دیگری هم از همین دستور با تغییر دادن کلید استفاده کنید :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == (Keys.Control | Keys.Q))
            {
                // Your Code Here ...
                MessageBox.Show("Ctrl+Q");
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }

کاربر سایت

marziegh

عضویت از 1395/09/06

  • یکشنبه 7 آذر 1395
  • 17:00

خیلی ممنون. جناب مهندس

من یه سوال در مورد کدم داشتم وقتی از کد فوق استفاده میکنم دستور برای برنامه ی سی شارپ اجرا میشه و message رو نشون میده ولی روی  Word صفحه ی FIND باز نمیشه.من میخوام در هنگام اجرای این دستور تو سی شارپ صفحه ی فعالم صفحه ی Word باشه نه برنامه ی خودم . طبق یه حلقه ای دستورات سی شارپ به اعمال Ctrl+Q برسه بعد صفحه ی ورد صفحه ی فعال بشه و به طور اتوماتیک صفحه ی Find باز بشه.

ممنون.

کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • یکشنبه 7 آذر 1395
  • 17:30

برای Search یا SearchAndReplace  توسط کد سی شارپ می بایست از کتابخانه Microsoft.Office.Interop.Word استفاده کنید که  میتوانید آن را با nuGet دانلود کنید و به پروژه خود اضافه کنید .

متدهای زیر هم برای پیدا کردن یا جایگزین کردن متن شما می باشند:

private void Find(Microsoft.Office.Interop.Word.Application doc, object findText)
        {
            //options
            object matchCase = false;
            object matchWholeWord = true;
            object matchWildCards = false;
            object matchSoundsLike = false;
            object matchAllWordForms = false;
            object forward = true;
            object format = false;
            object matchKashida = false;
            object matchDiacritics = false;
            object matchAlefHamza = false;
            object matchControl = false;
            object read_only = false;
            object visible = true;
            object replace = 2;
            object wrap = 1;
            //execute find and replace
            doc.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
                ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, 
                null,null,
                ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
        }

        private void FindAndReplace(Microsoft.Office.Interop.Word.Application doc, object findText, object replaceWithText)
        {
            //options
            object matchCase = false;
            object matchWholeWord = true;
            object matchWildCards = false;
            object matchSoundsLike = false;
            object matchAllWordForms = false;
            object forward = true;
            object format = false;
            object matchKashida = false;
            object matchDiacritics = false;
            object matchAlefHamza = false;
            object matchControl = false;
            object read_only = false;
            object visible = true;
            object replace = 2;
            object wrap = 1;
            //execute find and replace
            doc.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
                ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace,
                ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
        }

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == (Keys.Control | Keys.Q))
            {
                object fileName = Path.Combine("G:\\word.docx");
                Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true };
                Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(fileName, ReadOnly: false, Visible: true);
                aDoc.Activate();
                //FindAndReplace(wordApp, "لورم", "سجاد");
                Find(wordApp, "لورم");
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }

کاربر سایت

marziegh

عضویت از 1395/09/06

  • یکشنبه 7 آذر 1395
  • 20:40

خیلی ممنون آقای مهندس. واقعا به من لطف کردین که وقت گذاشتین و راهنمایی کردین. قطعا کدی که شما گذاشتین رو تو پروژه ام استفاده میکنم و برای من واقعا کاربردیه. نمیدونم چه طوری به خاطر زحمتی که کشیدین تشکر کنم. heartheart

آقای مهندس من سوال دیگه ای هم دارم در مورد پایان نامه ام که اگه بشه و وقت دارید راهنمایی کنید.

رشته ی من مهندسی عمران هست و من میخوام برای پایان نامه ام چند نرم افزار مختلف رو به هم لینک کنم. متاسفانه برای ورودی اطلاعات تکست احتیاج دارم که برخی صفحات مزاحم که بیخودی تو مسیر اجرای کدم باز میشه رو ببندم . نرم افزار تحلیلی  که من استفاده میکنم بعد از ران شدن یه صفحه ی توضیحات اولیه باز میکنه که تا بسته نشه به من اجازه ی تحلیل های دینامیکی مداوم رو نمیده و من مجبورم اول با کد نویسی مدلم رو بسازم و تک به تک ران کنم و بقیه ی کدنویسی هام مربوط به برداشت نتایج و در واقع  بخش اصلی کد نویسیم به درد م نمیخوره !!!  حدودا 500 تا مدل با کدنویسی ساختم. در صورتی که اگه اون صفحه ی مزاحم نباشه راحت با حلقه ی for مشکلم حله . شما پیشنهادی برای کمک به من دارید؟ کد نویسی پیشرفته یا خاصی میخواد ؟

در ضمن نرم افزار تحلیلی مورد استفاده ی من یک سری کلید های shortcut هم داره که با کمک اونها بدون باز شدن صفحه ی مزاحم میانی و باز شدن صفحه ی opendialog میتونم فایل تکست رو وارد نرم افزار کنم که این مورد رو هم  بلد نیستم کد بنویسم.

اگه لطف کنید نظرتون رو بگید خیلی ممنون میشم. یا اگه بتونید برام بنویسید این بخش کد رو برای استفاده از shortcut  و انتخاب دکمه ی ok صفحه ی opendialog به صورت خودکار از نظر هزینه و وقت به من اطلاع بدید که تصمیم بگیرم.

ممنون.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)