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

Я надеюсь, что это то, что вы имеете в виду:

from tkinter import *
import tkinter

root = Tk()

btn1 = Button(root,text="Example")
btn1.visible = True
btn1.place(x=20, y=50)
btn1.pi = btn1.place_info()

btn3 = Button(root, text="click me", command=lambda:plugin())
btn3.place(x=20, y=150)

def plugin():
    master = Tk()

    def toggle1():
        if btn1.visible:
            btnToggle1["text"] = "Show Example"
            btnToggle1["state"] = DISABLED
            print ("Now you don't")
            btn1.place_forget()
        else:
            btn1.place(btn1.pi)
            print ("Now you see it")
            btnToggle1["state"] = NORMAL
            btnToggle1["text"] = "Hide Example"
        btn1.visible = not btn1.visible


    btnToggle1 = Button(master, text="Hide Example", command=toggle1)
    btnToggle1.place(x=70, y=150)

    master.mainloop()

root.mainloop()
27
задан EL Yusubov 3 January 2013 в 04:39
поделиться

7 ответов

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

53
ответ дан 28 November 2019 в 04:21
поделиться

Создайте консольное приложение «MyAppProxy» со следующим кодом и поместите MyAppProxy в каталог запуска,

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();
}

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

4
ответ дан Akash Kava 28 November 2019 в 04:21
поделиться

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

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

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

2
ответ дан Quispie 28 November 2019 в 04:21
поделиться

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

5
ответ дан 28 November 2019 в 04:21
поделиться

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

        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();

Смотрите другие возможные решения -

Переключить Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden во время выполнения

и,

Вывести окно другого процесса на передний план, когда у него ShowInTaskbar = false

2
ответ дан 28 November 2019 в 04:21
поделиться

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

1
ответ дан 28 November 2019 в 04:21
поделиться

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

-3
ответ дан 28 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: