c# - Get PID from MS-Word ApplicationClass? -
इस कोड पर विचार करें:
Microsoft.Office.Interop.Word का उपयोग कर; ApplicationClass _application = नया ApplicationClass (); क्या मैं Winword.exe प्रक्रिया से PID प्राप्त कर सकता हूं जो कि _application द्वारा शुरू किया गया था?
मुझे भ्रष्ट फाइलों के कारण पीआईडी की आवश्यकता है, मैं बस नहीं कर सकता ApplicationClass को छोड़ें, यहां तक कि इस कोड का उपयोग कर:
_application.Quit (रेफ्यूफाइल, रेफ़ लापता, रेफ़ लापता); System.Runtime.InteropServices.Marshal.ReleaseComObject (_application); GC.Collect (); GC.WaitForPendingFinalizers (); मैं winword.exe प्रक्रिया की खोज नहीं कर सकता और उसे मार डालूंगा, क्योंकि मेरे पास कई होंगे, और मुझे नहीं पता कि कौन मारना है I अगर मैं प्रत्येक अनुप्रयोग क्लास के लिए एक पीआईडी प्राप्त कर सकता हूं, तो मैं सिर्फ सही Winword.exe प्रक्रिया को मार सकता हूं जो मुझे छोड़ने के लिए परेशानी दे रहा है।
यह कैसे करना है यह है।
// सेट करें AppId स्ट्रिंग AppId = "+ DateTime.Now.Ticks (); // एक यादृच्छिक शीर्षक // इस ऐप के लिए एक पहचान बनाएँ। ओईडब्ल्यूडब्ल्यूड अनुप्रयोग = नया Microsoft.Office.Interop.Word.ApplicationClass (); This.oWordApp.Application.Caption = AppId; This.oWordApp.Application.Visible = true; /// शब्द एप्लिकेशन के लिए इसे प्राप्त करें। WordPid = StaticMethods.GetProcessIdByWindowTitle (AppId); जबकि (StaticMethods.GetProcessIdByWindowTitle (AppId) == Int32.MaxValue) // जब तक लूप प्राप्त करें {Thread.Sleep (5); } This.WordPid = StaticMethods.GetProcessIdByWindowTitle (AppId); /// आप कर सकते हैं आवेदन बाद में इस। Hide.AWordApp.Application.Visible = false; स्ट्रिंग this.oWordApp = नया Microsoft.Office.Interop.Word.ApplicationClass (); This.oWordApp.Application.Caption = AppId; This.oWordApp.Application.Visible = true; /// इस द्वारा pid प्राप्त करें। WardPid = StaticMethods.GetProcessIdByWindowTitle (AppId); जबकि (StaticMethods.GetProcessIdByWindowTitle (AppId) == Int32.MaxValue) {Thread.Sleep (5); } This.WordPid = StaticMethods.GetProcessIdByWindowTitle (AppId); This.oWordApp.Application.Visible = false; // अब आप एप्लिकेशन को छिपा सकते हैं /// & lt; सारांश & gt; / / उस शीर्षक के द्वारा दी गई प्रक्रिया का नाम देता है /// & lt; / summary & gt; /// & lt; परम नाम = "ऐपआईडी" & gt; Int32MaxValue लौटाया जाता है अगर यह पाया नहीं जा सकता। & Lt; / param & gt; /// & lt; रिटर्न & gt; & lt; / रिटर्न & gt; सार्वजनिक स्थिर ग GetProcessIdByWindowTitle (स्ट्रिंग AppId) {प्रक्रिया [] P_CESSES = प्रक्रिया। GetProcesses (); के लिए (int p_count = 0; p_count & lt; P_CESSES.Length; p_count ++) {यदि (P_CESSES [p_count] .मानविंडोटाइट। एक्लॉल्स् (ऐपआईडी)) {वापसी P_CESSES [p_count]। आईआईडी; }} वापसी Int32.MaxValue; }
Comments
Post a Comment