我試圖在Visual C#2010 - Windows窗體應用程序中啓動外部進程。我們的目標是以隱藏窗口的形式啓動流程,並在稍後取消隱藏窗口。如何在C#中隱藏/取消隱藏進程?
我已經更新了我的進步:
//Initialization
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern bool EnableWindow(IntPtr hwnd, bool enable);
[DllImport("user32.dll")]
private static extern bool MoveWindow(IntPtr handle, int x, int y, int width,
int height, bool redraw);
SW_SHOW = 5;
下被放置在我的主要功能:
ProcessStartInfo info = new ProcessStartInfo("process.exe");
info.WindowStyle = ProcessWindowStyle.Hidden;
Process p = Process.Start(info);
p.WaitForInputIdle();
IntPtr HWND = p.MainWindowHandle;
System.Threading.Thread.Sleep(1000);
ShowWindow(HWND, SW_SHOW);
EnableWindow(HWND, true);
MoveWindow(HWND, 0, 0, 640, 480, true);
然而,因爲窗口開始爲 「隱藏」,p.MainWindowHandle = 0
。我無法成功顯示窗口。我也試過HWND = p.Handle
沒有成功。
有沒有辦法給我的窗口提供一個新的句柄?這可能會解決我的問題。
參考文獻:
隱藏的程序? (狡猾) - 或隱藏表單? –
隱藏進程的窗口。爲了說明方便,我們假設它是Internet Explorer:'ProcessStartInfo info = new ProcessStartInfo(「iexplore」);' –
CreateNoWindow僅適用於控制檯模式應用程序。隱藏需要一個GUI應用程序來協作,並注意Windows傳遞給它的WinMain()函數的'nCmdShow'參數。然而這經常被忽略。除了聯繫店主之外,你無能爲力。 –