對不起,如果這已被問到,但我無法找到答案。我可能不會搜索正確的條款。如何阻止C#控制檯應用程序優先使用活動窗口?
我有一個控制檯程序,需要在後臺運行。用戶需要控制檯保持打開它運行的白色,但需要它在啓動時不成爲活動窗口。他們希望繼續他們目前的工作,而不必在每次啓動時儘量減少控制檯。
該控制檯應用程序運行多次,每次都有一個新的控制檯窗口。我該如何「隱藏」當前正在運行的任務/窗口後面的控制檯?
對不起,如果這已被問到,但我無法找到答案。我可能不會搜索正確的條款。如何阻止C#控制檯應用程序優先使用活動窗口?
我有一個控制檯程序,需要在後臺運行。用戶需要控制檯保持打開它運行的白色,但需要它在啓動時不成爲活動窗口。他們希望繼續他們目前的工作,而不必在每次啓動時儘量減少控制檯。
該控制檯應用程序運行多次,每次都有一個新的控制檯窗口。我該如何「隱藏」當前正在運行的任務/窗口後面的控制檯?
您可以通過編程最小化/使用下面的代碼恢復控制檯窗口:
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);
這正是我所需要的。一旦應用程序啓動,我就會隱藏窗口,並允許用戶繼續執行當前任務。謝謝。 – sange 2011-06-10 13:48:11
不客氣。 – 2011-06-10 13:50:13
我不不知道阻止控制檯窗口顯示的方法。控制檯應用程序中的最佳方法是在應用程序加載後立即隱藏窗口。視覺效果是快速打開控制檯窗口,然後消失。也許不是最佳。
更好的方法可能是使用Winexe而不是控制檯應用程序。在Windows應用程序(也許是一個winforms應用程序)內,永遠不要實例化第一種形式。因此不會顯示任何內容。
這可以防止用戶交互,但從您的描述來看,這聽起來就是您想要的。
但我不確定你是否擁有「控制檯應用程序」的控制權。
爲什麼你需要**控制檯窗口可見? – Yuck 2011-06-10 13:32:47
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/ea8b0fd5-a660-46f9-9dcb-d525cc22dcbd – Gage 2011-06-10 13:33:15
根本沒有GUI會更好嗎?讓它在後臺運行?這可以很容易地完成。 – Phil 2011-06-10 13:47:08