Подтвердить что ты не робот

Как скрыть консольное приложение в С#

У меня есть консольное приложение на С#, и я хочу, чтобы пользователь не смог его увидеть.

Как я могу это сделать?

4b9b3361

Ответ 1

Скомпилируйте его как приложение Windows Forms. Тогда он не будет отображать какой-либо пользовательский интерфейс, если вы явно не открываете Windows.

Ответ 2

В ProjectProperties установите тип вывода как приложение Windows.

Ответ 3

Похоже, вы не хотите консольное приложение, а приложение GUI для Windows, которое не открывает (видимое) окно.

Ответ 4

Создайте консольное приложение "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();
}

Возможно, вам понадобится исправить некоторые элементы здесь, так как я не проверял правильность кода, он не может компилироваться, потому что некоторые имена свойств могут быть разными, но надеюсь, что вы получите эту идею.

Ответ 5

Лучший способ - запустить процесс без окна.

        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

Ответ 6

Чтобы скрыть приложение консоли в С#, когда ничего не работает, используйте этот код:

[DllImport("kernel32.dll")]
public static extern bool FreeConsole();

Поместите FreeConsole() в любом месте кода, я поместил его в Init(), и командная строка скрыта.

Ответ 7

Вы можете вызывать вызов FindWindow(), чтобы получить дескриптор вашего окна, а затем вызвать ShowWindow(), чтобы скрыть окно ИЛИ Запустите приложение из другого приложения, используя ProcessStartInfo.CreateNoWindow

Ответ 8

Создайте службу wcf и разместите ее в соответствии с вашими потребностями.