У меня есть консольное приложение на С#, и я хочу, чтобы пользователь не смог его увидеть.
Как я могу это сделать?
У меня есть консольное приложение на С#, и я хочу, чтобы пользователь не смог его увидеть.
Как я могу это сделать?
Скомпилируйте его как приложение Windows Forms. Тогда он не будет отображать какой-либо пользовательский интерфейс, если вы явно не открываете Windows.
В ProjectProperties установите тип вывода как приложение Windows.
Похоже, вы не хотите консольное приложение, а приложение GUI для Windows, которое не открывает (видимое) окно.
Создайте консольное приложение "MyAppProxy" со следующим кодом и поместите MyAppProxy в начало dir,
public static void main(string[] args)
{
Process p = new Process("MyApp");
ProcessStartUpInfo pinfo = new ProcessStartUpInfo();
p.StartupInfo = pinfo;
pinfo.CreateNoWindow = true;
pinfo.ShellExecute = false;
p.RaiseEvents = true;
AutoResetEvent wait = new AutoResetEvent(false);
p.ProcessExit += (s,e)=>{ wait.Set(); };
p.Start();
wait.WaitOne();
}
Возможно, вам понадобится исправить некоторые элементы здесь, так как я не проверял правильность кода, он не может компилироваться, потому что некоторые имена свойств могут быть разными, но надеюсь, что вы получите эту идею.
Лучший способ - запустить процесс без окна.
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "echo Hello!";
//either..
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//or..
p.StartInfo.CreateNoWindow = true;
p.Start();
См. другие возможные решения -
Toggle Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden во время выполнения
и
Принесите другое окно процессов на передний план, если у него есть ShowInTaskbar = false
Чтобы скрыть приложение консоли в С#, когда ничего не работает, используйте этот код:
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
Поместите FreeConsole() в любом месте кода, я поместил его в Init(), и командная строка скрыта.
Вы можете вызывать вызов FindWindow(), чтобы получить дескриптор вашего окна, а затем вызвать ShowWindow(), чтобы скрыть окно ИЛИ Запустите приложение из другого приложения, используя ProcessStartInfo.CreateNoWindow
Создайте службу wcf и разместите ее в соответствии с вашими потребностями.