gpt4 book ai didi

c# - 在运行时切换 Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

转载 作者:行者123 更新时间:2023-11-30 14:42:55 25 4
gpt4 key购买 nike

我想在运行时切换一个进程的可见性,我有一个 Windows Form 应用程序,它通过一个进程启动,另一个控制台应用程序默认隐藏,但我想让管理员用户切换它通过复选框状态并在他们选择时显示控制台应用程序。

我有这个,但它不工作:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
ProcessWindowStyle state = cvarDataServiceProcess.StartInfo.WindowStyle;
if (state == ProcessWindowStyle.Hidden)
cvarDataServiceProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
else if (state == ProcessWindowStyle.Normal)
cvarDataServiceProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
}

最佳答案

你必须为此使用 Win32 API。

    [DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

ProcessWindowStyle state = ProcessWindowStyle.Normal;

void toggle()
{
if (cvarDataServiceProcess.HasExited)
{
MessageBox.Show("terminated");
}
else
{
if (cvarDataServiceProcess.MainWindowHandle != IntPtr.Zero)
{
if (state == ProcessWindowStyle.Hidden)
{
//normal
state = ProcessWindowStyle.Normal;
ShowWindow(cvarDataServiceProcess.MainWindowHandle, 1);
}
else if (state == ProcessWindowStyle.Normal)
{
//hidden
state = ProcessWindowStyle.Hidden;
ShowWindow(cvarDataServiceProcess.MainWindowHandle, 0);
}
}
}
}

但是,当进程启动隐藏时,这将不起作用,因为不会创建窗口并且主窗口的句柄将为零(无效)。
所以,也许你可以正常启动进程,然后隐藏它。 :)

关于c# - 在运行时切换 Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com