我有一个 Windows 服务。如果我从调试器启动它,我想使用控制台输出运行(因为你不能运行服务)。
通常 Windows 服务被设置为 WindowApplication 作为项目类型并且没有“窗口”入口点。因此它删除了旧的控制台。
如果您想要一个控制台窗口,您需要将项目类型更改为 ConsoleAppication。我想在程序本身内执行此操作,而不是更改项目设置。
这可能吗?
最佳答案
实际上,您可以在程序启动时使用一个简单的检查来查看它是否作为服务运行,然后使用 AllocConsole 命令启动控制台。这是示例代码。
namespace TestService
{
static class Program
{
[DllImport("kernel32.dll")]
static extern bool AllocConsole();
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
if (!Environment.UserInteractive)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
else
{
AllocConsole();
//Start Code that interfaces with console.
}
}
}
}
关于c# - 通过程序逻辑添加控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006374/