2010-11-06 15 views
6

मैं जानता हूँ कि मैं निम्नलिखित कोड के साथ विंडोज कैलक्यूलेटर खोल सकते हैं:मेरे सी # विन एप्लिकेशन में ओपन विंडोज 'कैलक्यूलेटर?

System.Diagnostics.Process.Start("calc"); 

लेकिन मैं में मेरी सी # जीत आवेदन, यानी इसे खोलने चाहता हूँ: मैं स्वतंत्र विंडो में खोलने के लिए नहीं करना चाहते, मैं खुले चाहता हूँ यह मेरी खिड़की में है।
मैं यह कैसे कर सकता हूं?

उत्तर

10

के लिए आप नहीं कर सकते हैं अपने फॉर्म में एक और आवेदन एम्बेड करें।

हालांकि, आप अपने फॉर्म के शीर्ष पर कैलकुलेटर विंडो ले जा सकते हैं और अपना फॉर्म अपने माता-पिता के रूप में सेट कर सकते हैं। यह उस दृश्य प्रभाव को पूरा कर सकता है जिसे आप ढूंढ रहे हैं। आप SetParent एपीआई फ़ंक्शन में देख सकते हैं। उदाहरण के लिए:

System.Diagnostics.Process p = System.Diagnostics.Process.Start("calc.exe"); 
p.WaitForInputIdle(); 
NativeMethods.SetParent(p.MainWindowHandle, this.Handle); 

एक बेहतर समाधान सिर्फ सी # में अपने स्वयं के कैलकुलेटर नियंत्रण रोल करने यदि आप वास्तव में अपने अनुप्रयोग में एम्बेडेड है कि कार्यक्षमता की जरूरत हो सकती है। एक साधारण कैलकुलेटर को एक साथ जोड़ना वास्तव में मुश्किल नहीं है, और यह असीम रूप से करने योग्य है और जैसा आप चाहते हैं उतना दिखता है।

इस तरह कुछ, शायद, एक अच्छा प्रारंभिक बिंदु हो सकता है अगर आप अपने खुद के कैलकुलेटर रोल करना चाहता था: http://www.codeproject.com/KB/cs/Scientific_Calculator.aspx

और मैं हमेशा सोचा है एक नियंत्रण के इस प्रकार हास्यास्पद उपयोगी किसी दिन हो सकता है अगर मैं कभी भी लिखा था एक ऐप्लिकेशन है जो संख्यात्मक इनपुट पर काफी भरोसा: http://www.codeproject.com/KB/miscctrl/C__Popup_Calculator.aspx

+0

लेकिन यह अभिभावक के रूप में सेट नहीं होगा। यह एक और विंडो में खुल जाएगा – aliboy38

+0

@ aliboy38 आप किस बारे में बात कर रहे हैं? –

+0

कैलक्यूलेटर स्वतंत्र विंडो में खुल जाएगा। – aliboy38

4

एमएस विंडोज कैलकुलेटर एक जीयूआई नियंत्रण नहीं है, यह एक स्टैंडअलोन एप्लिकेशन है। आप देख रहे हैं एक .NET कैलकुलेटर नियंत्रण के लिए, वहाँ तीसरे पक्ष के विक्रेताओं से कुछ व्यावसायिक नियंत्रण, उदाहरण

यहाँ

http://download.cnet.com/Softgroup-Net-Calculator-Control/3000-10250_4-10909672.html

या यहाँ

http://www.softpedia.com/get/Programming/Components-Libraries/Net-Calculator-Control.shtml

5

आप SetParent(), PInvoke सकते चाइल्ड विंडो हैंडल कैल्क की Process.MainWindowHandle होना चाहिए, माता पिता खिड़की खिड़की के हैंडल, जिसमें आप एम्बेड करना चाहते होना चाहिए यह। फॉर्म। हैंडल आपको वह मूल्य देता है। विंडो को सही जगह पर लाने के लिए आपको MoveWindow की भी आवश्यकता होगी। आवश्यक पिनवोक घोषणाएं प्राप्त करने के लिए pinvoke.net का उपयोग करें।

+0

क्या आप बेहतर समझने के लिए नमूना कोड पोस्ट करेंगे? धन्यवाद –

+2

Google + setparent + mainwindowhandle और पहली हिट लें। –

+0

एसडीके दस्तावेज़ीकरण में यह कहता है कि बाल खिड़कियां एक ही प्रक्रिया से संबंधित होनी चाहिए? – jonsb

-1
using System.Diagnostics; 

try 
    { 
     Process p = null; 
     if (p == null) 
      { 
      p = new Process(); 
      p.StartInfo.FileName = "Calc.exe"; 
      p.Start(); 
      } 
     else 
      { 
       p.Close(); 
       p.Dispose(); 
      } 
     } 
     catch (Exception e) 
      { 
       MessageBox.Show("Excepton" + e.Message); 
      } 
    } 
0

नीचे आज़माएं; मेरे लिए भागो

using System.Diagnostics; 

    private void button1_Click(object sender, EventArgs e) 

     { 
     string filename= "calc.exe"; 

     Process runcalc= Process.Start(filename); 

     while (runcalc.MainWindowHandle == IntPtr.Zero) 
     { 

      System.Threading.Thread.Sleep(10); 

      runcalc.Refresh(); 

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