- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 2 个在 .NET 中创建的程序 (.exe)。我们称他们为主人和 worker 。 Master 启动 1 个或多个 Worker。 Worker 不会与用户交互,但它是一个 WinForms 应用程序,可以接收命令并根据从 Master 接收到的命令运行 WinForms 组件。
我希望 Worker 应用完全隐藏运行(当然除了出现在任务管理器中)。我认为我可以使用 StartInfo.CreateNoWindow 和 StartInfo.WindowStyle 属性来完成此操作,但我仍然在窗体中看到 Client.exe 窗口和组件。但是,它不会显示在任务栏中。
Process process = new Process
{
EnableRaisingEvents = true,
StartInfo =
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "Client.exe",
UseShellExecute = false,
ErrorDialog = false,
}
};
我需要怎么做才能让Client.exe运行起来却不显示呢?ㅤㅤㅤㅤㅤ
最佳答案
您对 CreateNoWindow
/WindowStyle
的使用在我的带有 notepad.exe 的系统上运行良好(例如,它是隐藏的但在后台运行),所以它可能是 WinForms 的问题应用程序正在做。一些想法:
选项 1:如果您控制 WinForms 工作进程,您可以覆盖 Control.SetVisibleCore
始终隐藏表格。如果你不想总是隐藏它,你可以传递一个命令行参数给它,例如/hide
将导致它被隐藏。示例(假设表单已经有代码隐藏):
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
protected override void SetVisibleCore(bool value)
{
// You'd probably want to parse the command line.
if (Environment.CommandLine.Contains("/hide"))
base.SetVisibleCore(false);
else
base.SetVisibleCore(value);
}
}
有了这个,运行 MyForm.exe
会产生一个具有可见表单的进程。运行 MyForm.exe/hide
会产生一个带有隐藏表单的进程。您可以从主进程传递 /hide
参数,这样运行该应用程序的普通用户仍会看到它。
选项 2:您可以在应用程序启动后通过对 ShowWindow
执行 P/Invoke 来隐藏应用程序.关于此的更多信息 here .这有一个缺点,您有时会看到工作窗口在隐藏之前闪烁。示例:
class Program
{
public static void Main(string[] args)
{
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = @"C:\windows\system32\notepad.exe",
};
Process process = Process.Start(psi);
// Wait until the process has a main window handle.
while (process.MainWindowHandle == IntPtr.Zero)
{
process.Refresh();
}
ShowWindow(process.MainWindowHandle, SW_HIDE);
}
const int SW_HIDE = 0;
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}
关于C# - 启动不可见进程(CreateNoWindow 和 WindowStyle 不起作用?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011209/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!