2011-06-10 17 views
6

Bu soru sorulduğunda özür dilerim ama yanıt alamıyorum. Doğru terimleri aramıyorum.C# konsolu uygulamasının etkin pencere olarak öncelik almasını nasıl önleyebilirim?

Arka planda çalıştırılması gereken bir konsol programım var. Kullanıcının açık beyaz kalması için konsola ihtiyacı var, ancak başladığında aktif pencere olmaya gerek yok. Şu anda üzerinde çalıştıkları şeylere devam etmek istiyorlar ve her başladığında konsolu küçültmek zorunda kalmıyorlar.

Bu konsol uygulaması, her defasında yeni bir konsol penceresi ile birden çok kez çalışır. Konsolu mevcut görev/pencerenin arkasına nasıl gizleyebilirim?

+0

Neden konsol penceresinin görünür olması için ** ihtiyacınız var? – Yuck

+0

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

+0

Bir GUI'nin olmaması daha iyi olur mu? Sadece arka planda koşmasına izin ver? Bu kolayca yapılabilir. – Phil

cevap

6

programlı kodunun altına kullanarak konsol pencereleri geri/en aza indirebilir: Eğer konsol uygulaması başlatmak için Process.Start kullanıyorsanız

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); 
     } 
    } 
} 

, daha iyi kullanmak bu:

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

Bu tam olarak ihtiyacım olan şey. Uygulamanın başladığı anda pencereyi gizlerim ve kullanıcının mevcut görevine devam etmesini sağlar. Teşekkürler. – sange

+0

Rica ederim. –

1

ı don Konsol penceresinin görüntülenmesini engellemenin bir yolunu biliyorsunuz. Bir konsol uygulamasında en iyi yaklaşım, uygulama yüklendikten hemen sonra pencereyi gizlemektir. Görsel efekt, konsol penceresinin hızlı bir şekilde açılmasıdır, sonra kaybolur. Belki de optimal değildir. Konsol uygulaması yerine Winexe kullanmak daha iyi bir yaklaşım olabilir. Windows uygulamasında (belki bir winform uygulaması), ilk formu asla başlatamazsınız. Bu nedenle hiçbir şey gösterilmez.

Bu, kullanıcı etkileşimini önler, ancak açıklamanızdan istediğiniz gibi geliyor.

Ancak "konsol uygulaması" üzerinde denetiminiz olduğundan emin değilim.

İlgili konular