Visual C#2010 - Windowsフォームアプリケーションで外部プロセスを開始しようとしています。目標は、プロセスを非表示ウィンドウとして開始し、後でそのウィンドウを再表示することです。ウィンドウがp.MainWindowHandle = 0
"隠された" として開始されたため、しかしC#でプロセスを非表示/非表示にする方法は?
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);
:
//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;
以下が私の主な機能の中に入れた:
私は自分の進捗状況を更新しました。私は正常にウィンドウを表示することができません。私もHWND = p.Handle
を試してみました。
ウィンドウに新しいハンドルを提供する方法はありますか?これは私の問題を解決する可能性があります。
参考文献:ProcessWindowStyle.Hidden
はあなたもfalseにProcessStartInfo.UseShellExecute
を設定する必要があります使用する
プロセスを隠しますか? (dodgy) - またはフォームを隠す? –
プロセスのウィンドウを非表示にします。議論のために、それはインターネットエクスプローラだとしましょう。 'ProcessStartInfo info = new ProcessStartInfo(" iexplore ");' –
CreateNoWindowはコンソールモードのアプリケーションでのみ動作します。非表示にするには、GUIアプリケーションが協力し、WindowsがそのWinMain()関数に渡す 'nCmdShow'引数に注意を払う必要があります。それはしばしば無視されます。あなたが所有者に連絡する以外に何もすることはできません。 –