【发布时间】:2010-11-23 09:06:27
【问题描述】:
我想用 c++ 制作一个定期运行的应用程序。很像 Windows 服务。是否可以在 C++ 中创建 Windows 服务。如果是怎么办?
有这方面的教程吗?
编辑:如何为 Windows 服务创建安装程序?
【问题讨论】:
标签: c++ windows-services
我想用 c++ 制作一个定期运行的应用程序。很像 Windows 服务。是否可以在 C++ 中创建 Windows 服务。如果是怎么办?
有这方面的教程吗?
编辑:如何为 Windows 服务创建安装程序?
【问题讨论】:
标签: c++ windows-services
如另一个答案所示,您需要创建一个普通的 C++ 程序(以main 开头),并调用StartServiceCtrlDispatcher Win32 API 来告诉 Windows 您希望将此程序作为服务运行。关于this function can be found in MSDN的一些信息。
此外,您需要一种机制来安装您的服务,以便它出现在 Windows 服务控制面板中。当然,还应提供卸载功能。通常,所有三个功能(即安装、卸载和运行)都在一个可执行文件中处理。这三者的区别通过命令行参数来表示。
您没有指明您使用的是哪个版本的 VC++。如果您要使用托管 .NET 代码,那么这很容易,因为 Windows 服务模板已预构建到 Visual Studio 中。
但是,如果您使用 VC++ 6(或 100% 非托管代码),那么您需要了解很多底层细节。进一步的选择取决于您对 ATL 或 MFC 的了解(如果您使用的是旧版本的编译器/运行时)。
这可能是creating Windows Services using C++ 上的一个很好的教程。
【讨论】:
C++ 与 C 的兼容性足以让传统方法发挥作用。您将应用程序构建为普通的 C++ 程序(以main 开头);在启动时调用StartServiceCtrlDispatcher 通知操作系统您的程序可以作为服务运行。 Windows 不在乎您在内部使用类。
【讨论】:
查看 POCO C++ 库,这些库可让您轻松编写守护程序/服务。
【讨论】:
当然可以。不仅有可能,而且这就是原生 API 的设计目的(嗯,确实是 C,但足够接近)。
请参阅 Jeff Richter 的书“Programming Server side Applications for Windows 2000”
【讨论】:
也许我迟到了,但我为创建 Windows 服务编写 C++ 类并希望共享代码 你需要从我的基类 cWinService 继承你的类 http://sprogram.com.ua/en/articles/how-write-service-for-windows-with-cpp
如果您有任何观察,请与我联系。 我不是 C++ 向导,我只是在学习 ;)
【讨论】: