QtService

QtService是一个用于实现windows服务或unix守护进程的开源项目,下载地址

本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。

源码

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

这里面有包含了几个示例程序,可以做参考。
可以直接编译源码生成动态库然后在自己项目中使用,当然也可以直接在项目中引用源码。

示例

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

新建一个控制台程序
然后将qtservice源码拷贝到项目中,新建一个类windowservice

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

include(qtservice/src/qtservice.pri)

windowservice类很简单

#pragma once#include <QCoreApplication>
#include "qtservice.h"class WindowService : public QtService<QCoreApplication>
{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 <QDebug>WindowService::WindowService(int argc, char **argv): QtService<QCoreApplication>(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 start

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

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

再次运行就可以了。

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

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

autorun.bat

@echo off
start QtServiceDemo.exe -exec
exit

以上示例代码下载

使用QtService实现Qt后台服务程序相关推荐

  1. Qt QWebsocket实现SSL后台服务程序 和微信小程序连接使用

    Qt QWebsocket实现SSL后台服务程序 和微信小程序连接使用 --Qt QWebsocket SSL wss 微信小程序 前言 微信小程序是不支持https和wss以外的远程通信接口的,这给 ...

  2. C++后台服务程序开发模式

    一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正了原程序的一些错误,补充了一 ...

  3. 后台服务程序开发模式(一)

    后台服务程序开发模式(一) 一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正 ...

  4. linux c 服务程序,Linux C 后台服务程序单进程控制

    介绍 通常后台服务器程序都必须有且只有一个进程,那么如何单进程呢? 本例子是通过flock函数对/var/run/myserver.pid记录pid文件的进行加锁 若加锁不正常,说明后台服务进程已经在 ...

  5. 搭建webassembly网页播放器(六)---websocket后台服务程序

    这里我们主要介绍后台搭建技术,前端搭建好后,需要后端配置展现,实现的效果就是 :网页连接上我们的 websocket服务后,我们就从H264文件中不断的提取出H264帧,然后传递给前端,前端调用web ...

  6. C# Net6开发Linux守护进程(后台服务程序,类似Windows服务)案例

    C# Net6开发Linux守护进程(后台服务程序,类似Windows服务)案例 背景 C# net6开发Linux守护进程要点 背景 在使用net6开发Linux程序时,除了AspNet Core项 ...

  7. QT后台监控键盘和鼠标

    目录 一.QT程序激活状态下的监控: 二.QT程序非激活状态下的监控 一.QT程序激活状态下的监控: 主要方法:重写键盘.鼠标事件(教程多,略过) void mouseMoveEvent(QMouse ...

  8. html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)

    目录 背景 演示及源码 背景 因为前些日子,去了XX培训,看到某公司写的软件,简直惊艳无比,如果使用Qt传统的widgets来写,辣么,将会是无比的复杂. 如果使用qml去写,难道稍微降低了一点点,但 ...

  9. 打印机后台服务程序没有运行的解决办法

    最近有很多用户询问打印机后台服务没有运行的问题.那么打印机后台服务没有运行应该怎么做呢?下面我就来介绍一下打印机后台服务没有运行的解决方法. 1.打开控制面板→管理工具→服务,在右侧选择 " ...

最新文章

  1. r语言siggenes包_初探R语言可视化交互式包plotly——旭日图(Sunburst Chart)
  2. 函数或变量 rtenslearn_c 无法识别_Stata:过度识别检验一文读懂
  3. hdu3613(扩展KMP)
  4. LeetCode之Rotate Array
  5. 计算机控制考试试卷及答案,计算机控制系统A考试试卷带答案.doc
  6. 华为EMUI10的美学哲思:让美不止初见
  7. C#数组和list集合的区别
  8. vlan未能连接服务器,PC单机局域网连接VLAN的方法
  9. 97. ExtJS之EditorGridPanel afteredit属性
  10. python图片换脸_无需PS,200 行 Python 代码实现简单图片人像识别换脸
  11. no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.
  12. 软件需求分析期末试题
  13. 现代软件工程讨论第一章-第四章
  14. App自动化测试介绍和环境搭建
  15. 傅里叶变换的相关公式
  16. 蒲公英分布平台下载更新实现
  17. [4G5G专题-92]:流程 - 4G LTE 终端在RRC IDLE空闲状态下的小区选择与小区重选
  18. 信创办公--基于WPS的Word最佳实践系列(快速自定义访问工具栏)——以添加“输出为PPTX”命令为例
  19. 下载Visual Studio
  20. 如何在网页点击按钮显示的图片

热门文章

  1. CVPR 2018 论文解读集锦(9月26日更新)
  2. 了解和使用类库(47)
  3. mysql.service failed because the control process exited with error code问题
  4. 一枚角度渐变描边 loading 图标的 SVG 修炼之路
  5. iOS UI_APPEARANCE_SELECTOR
  6. [译]Front-end-Developer-Interview-Questions
  7. zabbix 代理(agent)端详细安装配置
  8. 11.2.0.2 HAIP
  9. 带你攀顶云端高级认证,有这回事?
  10. Google Analytics虚拟页面和事件追踪的区别