在整个执行期间,如何查看服务的控制台窗口?

时间:2019-01-20 02:02:47

标签: c++ windows-services

可能这里已经回答了,但是我没有找到。

然后,我想知道如何执行c ++ 控制台应用程序 / 服务(将自身安装为服务),以便可以看到所有输出(printf())在执行期间(类似于在system("pause");中使用main()时在普通控制台应用程序中会发生什么)?直到现在,我只有在Avast DeepScreen执行他:-)时才能看到您的控制台窗口。

谢谢。


EDITION:

我已经在getchar();ServiceMain()中插入了while (true) ... Sleep(),但是没有成功。

2 个答案:

答案 0 :(得分:0)

好吧,使用c ++程序执行任何程序,只需使用命令提示符即可。 只需输入:

    system(“path to the program”);

然后,将执行该程序。如果是控制台窗口程序,它将弹出。 您可以看到输出,很好,请遵循以下步骤:     1 System.Diagnostics.Trace类与Console类具有相似的接口,因此您可以很轻松地将代码迁移到该类。     2然后可以将其配置为输出到文件。您可以使用System.Diagnostics.EventLog类写入事件日志,然后可以使用事件查看器对其进行监视。 3您可以使用非常灵活的第三方开源log4net库。

答案 1 :(得分:0)

服务没有控制台窗口。即使这样做,服务也不会在交互式桌面中运行,因此您还是看不到这样的窗口。

您需要重新考虑您的日志记录方法。要么

  • 将您的日志消息写入Windows事件日志,然后使用Windows事件查看器查看消息。

  • 创建一个单独的视觉应用程序,该应用程序在用户的交互式桌面中运行,并与服务流程进行通信以接收日志消息。然后,您可以根据需要显示消息。