سؤال

والسؤال ذات صلة [ستاكوفيرفلوو] هنا .

وأنا أحاول أن تفعل ما ورد أعلاه، ولكن أود أن أغتنم هذه العملية خطوة أخرى إلى الأمام. أريد أن أفتح ملف التعسفي باستخدام المحرر الافتراضي لنوع الملف. من تلك النقطة، أريد أن تسمح للمستخدم بلدي للتفاعل مع الملف كما يفعلون عادة، أو مواصلة العمل في طلبي. التمديد هو ما يحدث بعد انتهاء المستخدم التحرير. هل هناك طريقة يمكنني التقاط قريب (ومثالي حفظ) الحدث من تطبيق خارجي واستخدام ذلك بمثابة نقطة انطلاق لتفعل شيئا آخر؟ لأغراض بلدي، سوف تتبع إغلاق التطبيق الخارجي القيام به.

وأستطيع أن أفعل ذلك في حالة معينة. على سبيل المثال، لا أستطيع فتح مثيل Word من طلبي وتتبع الأحداث التي تثير طلبي. ومع ذلك، أريد أن اجتثاث زوجين طلبي من Word.I تريد أن تسمح للمستخدمين بلدي لاستخدام أي محرر الوثيقة التي يختارونها، ثم إدارة تخزين ملف يتم تحريرها بتحفظ وراء الكواليس.

هل كانت مفيدة؟

المحلول

ويمكنك القيام بذلك بطريقة مشابهة على السؤال المشار إليه، ولكن بناء الجملة يختلف قليلا:

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = 
    new System.Diagnostics.ProcessStartInfo("C:\...\...\myfile.html");
process.Start();
process.WaitForExit(); // this line is the key difference

وسوف الدعوة WaitForExit () منع حتى يتم إغلاق التطبيق الآخر. يمكنك استخدام هذا الرمز في موضوع مستقل بحيث يمكن للمستخدم الاحتفاظ باستخدام التطبيق الخاص بك في هذه الأثناء.

نصائح أخرى

واستخدم FileSystemWatcher الطبقة لمشاهدة ل تغييرات على الملف.

تعديل : في يمكنك أيضا التعامل في الحدث Exited من Process الاعتراض على معرفة عند الخروج من البرنامج. ومع ذلك، لاحظ أن هذا لن اقول لكم المستخدم إغلاق الملف الخاص بك ولكن لا خروج من العملية. (والذي هو المرجح خصوصا في Word).

لاستماع للتغيير الملف، يمكنك استخدام FileSystemWatcher والاستماع لتغيير تاريخ آخر تعديل.

ويمكنك أيضا مراقبة عملية الاختيار وثم ملف عند ختام العملية.

scroll top