QtService基本使用步骤

1、QtService介绍

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

测试使用Qt5.9.2版本。

2、项目引入QtService

下载的QtService,是一个qtservice文件夹,文件夹打开后内容包括:

准备好后,将qtservice文件夹放到项目根目录下。

在项目.pro文件夹下加入下面一行引入即可:

include($$PWD/qtservice/src/qtservice.pri)

3、使用方式

加入windowservice类

windowservice.h内容:

#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:

};

windowservice.cpp内容:

#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();

}

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

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

The service QtServiceDemo could not start

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

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

再次运行就可以了。

正常情况下,在Qt中Debug、Release可以正常调试服务程序,但是不会生成生成服务。

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

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

autorun.bat

@echo off

start QtServiceDemo.exe -exec

exit

文章参考:使用QtService实现Qt后台服务程序_luoyayun361的博客-CSDN博客

谢谢!

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: