2010-06-13 13 views
10

मैं सी # एक एप्लिकेशन (स्टैंडअलोन फ्लैशप्लेयर) से खोलना चाहता हूं और स्क्रीन पर स्थिति (0,0) सेट करना चाहता हूं। मैं यह कैसे कर सकता हूँ?खोलने की प्रक्रिया और विंडो की स्थिति बदलना

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
     } 
    } 
} 

उत्तर

6

पर MainWindowHandle property of ProcessSetWindowPos वर्णित here के रूप में प्रयास करें:

ये कुछ लिंक जहां आप और अधिक जानकारी प्राप्त कर सकते हैं। This पृष्ठ दिखाता है कि इसे सी # से कैसे कॉल करें।

+2

कोई अच्छा जवाब नहीं है क्योंकि प्रदान किए गए कोई भी कार्य कोड नहीं है। इसके अलावा, यह पृष्ठ "सी # से इसे कैसे कॉल करें" दिखा रहा है, एक गड़बड़ है _and_ वास्तव में पूरी तरह से कार्य करने वाला उदाहरण प्रदान नहीं करता है (अज्ञात विधि GetActiveWindowHandle)। लेखक द्वारा निचला जवाब बहुत बेहतर है। संक्षिप्त और कार्यात्मक। –

5

एक बार जब आप शुरू Process, अपने MainWindowHandle संपत्ति कुछ Windows संभाल कि शुरू कर दिया आवेदन की मुख्य विंडो के साथ जोड़ तोड़ के लिए इस्तेमाल किया जा सकता करने के लिए सेट किया जाना चाहिए: अब तक मैं flashplayer खोलने के लिए प्रबंधित किया है। मुझे नहीं लगता कि इसे .NET API का उपयोग करके सीधे स्थानांतरित करने का कोई तरीका है, लेकिन आप पी/Invoke के माध्यम से MoveWindow एपीआई फ़ंक्शन का उपयोग कर सकते हैं।

+1

प्रक्रिया। WaitForInputIdle() महत्वपूर्ण होगा। –

29

धन्यवाद दोस्तों, अब यह काम कर रहा है! :)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.Runtime.InteropServices; 
using System.Threading; 

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
      Thread.Sleep(100); 

      IntPtr id = flash.MainWindowHandle; 
      Console.Write(id); 
      Program.MoveWindow(flash.MainWindowHandle, 0, 0, 500, 500, true); 
     } 

     [DllImport("user32.dll", SetLastError = true)] 
     internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); 


    } 
} 
+4

उत्तर से काफी बेहतर है क्योंकि आप वास्तव में काम कोड साझा करने के लिए परेशान हैं, धन्यवाद। – u8it

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