Я разрабатываю консольное приложение для своей публичной библиотеки как школьный проект. Консольное приложение будет работать, как только пользователь входит в систему, и сделайте некоторую фоновую работу.
Вещь, я не хочу, чтобы консольное приложение на самом деле появилось. Мне нужен он невидимый. Последней вещью, в которой я нуждаюсь, являются жалобы, потому что некоторые люди волновались, что окно CMD открылось и закрытый, помимо которого библиотека хочет это максимально невидимый.
Я попробовал после кода в этом потоке: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ea8b0fd5-a660-46f9-9dcb-d525cc22dcbd
но напрасно, я могу все еще видеть, что консольное приложение появляется открытый и близкий после того, как оно сделало всю свою работу.
Существует ли лучший способ мешать консоли появиться?Спасибо.
Лучше всего просто не компилировать его как консольное приложение! Скомпилируйте его как Windows EXE, и консоль не будет отображаться. Затем вы можете просто делать все, что вам нужно, в методе Main без отображения пользовательского интерфейса.
Но в любом случае, если вы должны скрыть / показать окно консоли, я бы не стал использовать FindWindow для этой задачи, поскольку для этого существует гораздо более надежный API: GetConsoleWindow . Это даст вам HWND окна консоли, и вы можете попробовать передать его в ShowWindow.
Как Джош Эйнштейн предложил, вы можете использовать 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
}
}
Я не уверен в этом коде, так как не тестировал его. Сообщите мне, если у вас возникнут проблемы.
Это немного сложнее, чем консольное приложение ... но если вы хотите, чтобы что-то действительно работало в фоновом режиме, когда кто-то входит в систему, вы можете создать приложение службы 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
Вы пробовали: Project Properties> Application > output Type: to "Windows Application"?