2012-03-01 97 views
5

के रूप में सेट करें, मैं अपने वर्ड एप्लिकेशन को ऑटोमेशन पूरा होने पर अग्रभूमि में आने के लिए चाहता हूं।मैं वर्ड एप्लिकेशन के लिए Hwnd/Process Id कैसे प्राप्त करूं, और फोरग्राउंड विंडो

Excel में बराबर सीधे आगे है - एक्सेल आवेदन वस्तु एक .Hwnd प्रॉपर्टी में आप Windows API के साथ संयोजन के रूप में उपयोग कर सकते हैं:

SetForegroundWindow((IntPtr)excelApp.Hwnd); 

हालांकि वर्ड आवेदन एक .Hwnd संपत्ति नहीं है ।

मैं इस क्रम में सक्रिय() का उपयोग कर की कोशिश की है:

wordDoc.Activate(); 
wordApp.Activate(); 

लेकिन यह काम नहीं करता।

मुझे एप्लिकेशन नाम का उपयोग कर प्रक्रिया खोजने पर एक नज़र डाली है, लेकिन वर्ड चलने की एक से अधिक प्रतिलिपि हो सकती है।

धन्यवाद

जो

+0

वैसे इसका वर्णन करने पर एसओ पर एक पोस्ट है। http://stackoverflow.com/questions/814936/get-pid-from-word-plplicationclass –

+1

धन्यवाद ग्रीको - मैंने उस पोस्ट को देखा था, मैं कोड ओवरहेड को नीचे रखने की उम्मीद कर रहा था .. –

उत्तर

4

आप पहले से परे processArray पुनरावृति करना पड़ सकता है। शब्द 2010 के साथ केवल एक WinWord कार्य प्रबंधक में दिखाता है इससे कोई फर्क नहीं पड़ता कि कितने उदाहरण खुले हैं।

 System.Diagnostics.Process[] processArray = System.Diagnostics.Process.GetProcessesByName("WinWord"); 
     System.Diagnostics.Process word = processArray[0]; 
     SetForegroundWindow(word.MainWindowHandle); 
+0

+1 जानकारी के लिए, लेकिन मुझे इंटरेक्ट करना है: यह निश्चित रूप से शब्द 2010+ के बारे में सच नहीं है, केवल एक "WinWord" प्रक्रिया को उत्पन्न करता है - बस "नया एप्लिकेशन (...)" को दो बार कॉल करना सब कुछ लेता है। – BrainSlugs83

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^