2011-06-10 20 views
6

मुझे खेद है अगर यह पूछा गया है लेकिन मुझे इसका जवाब नहीं मिल रहा है। मैं सही शर्तों की खोज नहीं कर रहा हूं।मैं सी # कंसोल एप्लिकेशन को सक्रिय विंडो के रूप में प्राथमिकता लेने से कैसे रोकूं?

मेरे पास एक कंसोल प्रोग्राम है जिसे पृष्ठभूमि में चलाने की आवश्यकता है। उपयोगकर्ता को कंसोल की आवश्यकता होती है ताकि वह खुले सफेद बने रहें, लेकिन इसे शुरू होने पर सक्रिय विंडो बनने की आवश्यकता नहीं है। वे जारी रखना चाहते हैं कि वे वर्तमान में क्या काम कर रहे हैं और हर बार कंसोल को कम से कम नहीं करना है।

यह कंसोल एप्लिकेशन प्रत्येक बार एक नई कंसोल विंडो के साथ कई बार चलता है। वर्तमान चल रहे कार्य/विंडो के पीछे मैं कंसोल को "छुपा" कैसे बना सकता हूं?

+0

आपको ** कंसोल विंडो को दृश्यमान होने की आवश्यकता क्यों है? – Yuck

+0

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/ea8b0fd5-a660-46f9-9dcb-d525cc22dcbd – Gage

+0

क्या यह बेहतर होगा कि जीयूआई न हो? बस इसे पृष्ठभूमि में चलाने दें? यह आसानी से किया जा सकता है। – Phil

उत्तर

6

आप प्रोग्राम के रूप में कम से कम कर सकते हैं/कोड के नीचे का उपयोग कर सांत्वना विंडो पुनर्स्थापित:

using System; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Class1 
    { 
     [System.Runtime.InteropServices.DllImport("user32.dll")] 
     private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 
     private const int SW_MINIMIZE = 6; 
     private const int SW_MAXIMIZE = 3; 
     private const int SW_RESTORE = 9; 

     [STAThread] 
     static void Main(string[] args) 
     { 
      IntPtr winHandle = 
       System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; 
      ShowWindow(winHandle, SW_MINIMIZE); 
      System.Threading.Thread.Sleep(2000); 
      ShowWindow(winHandle, SW_RESTORE); 
     } 
    } 
} 

आप Process.Start उपयोग कर रहे हैं सांत्वना अनुप्रयोग शुरू करने के लिए, बेहतर का उपयोग करें:

System.Diagnostics.ProcessStartInfo process= new 
    System.Diagnostics.ProcessStartInfo(@"MyApplication.exe"); 
process.WindowStyle=System.Diagnostics.ProcessWindowStyle.Minimized; 
process.UseShellExecute=false; // Optional 
System.Diagnostics.Process.Start(process); 
+0

यह वही है जो मुझे चाहिए था। जैसे ही ऐप शुरू होता है, मैं विंडो को छुपाता हूं और यह उपयोगकर्ता को अपने वर्तमान कार्य को जारी रखने की अनुमति देता है। धन्यवाद। – sange

+0

आपका स्वागत है। –

1

मैं डॉन कंसोल विंडो को कभी प्रदर्शित होने से रोकने के लिए एक तरीका पता नहीं है। कंसोल ऐप में सबसे अच्छा तरीका ऐप लोड के तुरंत बाद विंडो को छिपाना है। दृश्य प्रभाव कंसोल विंडो का त्वरित खुलता है, फिर यह गायब हो जाता है। शायद इष्टतम नहीं है।

कंसोल ऐप के बजाय वाइनक्स का उपयोग करने के लिए एक बेहतर तरीका हो सकता है। विंडोज ऐप के अंदर (शायद एक विनफॉर्म ऐप), पहले फॉर्म को तुरंत चालू न करें। इसलिए कुछ भी प्रदर्शित नहीं होता है।

यह उपयोगकर्ता की बातचीत को रोकता है, लेकिन आपके विवरण से, ऐसा लगता है कि आप यही चाहते हैं।

लेकिन मुझे यकीन नहीं है कि आपके पास "कंसोल ऐप" पर नियंत्रण है।

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