使用QtService实现Qt后台服务程序

QT教程2023-03-22 04:53:00

QtService

QtService是一个用于实现windows服务或unix守护进程的开源项目。本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。

源码


(相关资料图)

在以上地址中将源代码下载到本地,目录结构如下:

这里面有包含了几个示例程序,可以做参考。

可以直接编译源码生成动态库然后在自己项目中使用,当然也可以直接在项目中引用源码。

示例

为方便演示,我们新建一个工程,介绍如何使用。

新建一个控制台程序

然后将qtservice源码拷贝到项目中,新建一个类windowservice

在工程文件pro中添加源码引用

include(qtservice/src/qtservice.pri)

windowservice类很简单

#pragma once#include #include \"qtservice.h\"class WindowService : public QtService{public:    WindowService(int argc, char **argv);    ~WindowService()override;protected:    void start()override;    void stop()override;    void pause()override{}    void resume()override{}private:};
#include \"windowservice.h\"#include WindowService::WindowService(int argc, char **argv)    : QtService(argc, argv, \"QtServiceDemo\"){    setServiceDescription(\"QtService Demo\");    setServiceFlags(QtServiceBase::CanBeSuspended);}WindowService::~WindowService(){}void WindowService::start(){    qDebug() << __FUNCTION__;}void WindowService::stop(){    qDebug() << __FUNCTION__;}

main.cpp中更简单了

#include \"windowservice.h\"int main(int argc, char *argv[]){    WindowService service(argc, argv);    return service.exec();}

这就ok了,使用非常简单。服务启动后会自动进入到start()这个虚函数中,其他几个函数同理,那么在实际项目中, 只需要将自己要执行的内容放到start()中就可以了。

运行项目,会看到一个报错:

The service QtServiceDemo could not

别着急,这不是代码的问题,这是因为服务的启动需要添加一个启动参数,​-exec​​​ 或者更简单点 ​​-e​​

如果要在Qt Creator中直接启动的话,那只需要配置一下启动参数即可,如下:

再次运行就可以了。

通常,后台服务程序都是由一个主程序去调用启动,如果是在Qt主程序中调用,可以使用QProcess完成,也是要添加启动参数才行。

那如果要直接双击运行的话,由于需要运行参数,所以不能直接双击打开执行程序,可以通过一个脚本调用来打开:

autorun.bat

@echo offstart QtServiceDemo.exe -exec exit

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

关键词:

上一篇:前国脚发声讨薪,质疑中甲队未完成清欠工作,已向足协发送材料
下一篇:最后一页