Создание моего невидимого консольного приложения

Я разрабатываю консольное приложение для своей публичной библиотеки как школьный проект. Консольное приложение будет работать, как только пользователь входит в систему, и сделайте некоторую фоновую работу.

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

Я попробовал после кода в этом потоке: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ea8b0fd5-a660-46f9-9dcb-d525cc22dcbd

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

Существует ли лучший способ мешать консоли появиться?Спасибо.

19
задан Kratz 16 August 2010 в 21:46
поделиться

4 ответа

Лучше всего просто не компилировать его как консольное приложение! Скомпилируйте его как Windows EXE, и консоль не будет отображаться. Затем вы можете просто делать все, что вам нужно, в методе Main без отображения пользовательского интерфейса.

Но в любом случае, если вы должны скрыть / показать окно консоли, я бы не стал использовать FindWindow для этой задачи, поскольку для этого существует гораздо более надежный API: GetConsoleWindow . Это даст вам HWND окна консоли, и вы можете попробовать передать его в ShowWindow.

37
ответ дан 30 November 2019 в 02:06
поделиться

Как Джош Эйнштейн предложил, вы можете использовать ShowWindow Api, чтобы скрыть ваше окно.

Вот пример:

using System.Runtime.InteropServices

class CommandLine
{

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

    [DllImport("Kernel32")]
    private static extern IntPtr GetConsoleWindow();

    const int SW_HIDE=0;
    const int SW_SHOW=5;

    static void Main(string[] args)
    {
         IntPtr hwnd;
         hwnd=GetConsoleWindow();
         ShowWindow(hwnd,SW_HIDE);

         //Your logic goes here
    }
}

Я не уверен в этом коде, так как не тестировал его. Сообщите мне, если у вас возникнут проблемы.

16
ответ дан 30 November 2019 в 02:06
поделиться

Это немного сложнее, чем консольное приложение ... но если вы хотите, чтобы что-то действительно работало в фоновом режиме, когда кто-то входит в систему, вы можете создать приложение службы Windows.

Но для этого требуется небольшая дополнительная работа по настройке и установке службы Windows, но в Интернете есть множество примеров кода:

http://msdn.microsoft.com/en-us/library/ 9k985bc9 (v = VS.80) .aspx

http://msdn.microsoft.com/en-us/library/sd8zc8ha (v = VS.80) .aspx

http: //www.c- sharpcorner.com/uploadfile/mahesh/window_service11262005045007am/window_service.aspx

http://www.developer.com/net/net/article.php/2173801/Creating-a-Windows-Service-in-NET.htm

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

2
ответ дан 30 November 2019 в 02:06
поделиться

Вы пробовали: Project Properties> Application > output Type: to "Windows Application"?

9
ответ дан 30 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

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