【问题标题】:How see console window of a service during your full execution lifetime?在整个执行生命周期中如何查看服务的控制台窗口?
【发布时间】:2019-01-20 02:02:47
【问题描述】:

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

然后我想知道如何执行 c++ console application/service(将自身安装为服务),我可以在您的过程中看到所有输出 (printf())执行(类似于在main() 中使用system("pause"); 时在普通控制台应用程序中发生的情况)?到目前为止,我只能在 Avast DeepScreen 执行他时看到你的控制台窗口:-)。

提前致谢。


版本:

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

【问题讨论】:

    标签: c++ windows-services


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

          system(“path to the program”);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-27
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多