使用QtService实现Qt后台服务程序
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后台服务程序相关推荐
- Qt QWebsocket实现SSL后台服务程序 和微信小程序连接使用
Qt QWebsocket实现SSL后台服务程序 和微信小程序连接使用 --Qt QWebsocket SSL wss 微信小程序 前言 微信小程序是不支持https和wss以外的远程通信接口的,这给 ...
- C++后台服务程序开发模式
一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正了原程序的一些错误,补充了一 ...
- 后台服务程序开发模式(一)
后台服务程序开发模式(一) 一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正 ...
- linux c 服务程序,Linux C 后台服务程序单进程控制
介绍 通常后台服务器程序都必须有且只有一个进程,那么如何单进程呢? 本例子是通过flock函数对/var/run/myserver.pid记录pid文件的进行加锁 若加锁不正常,说明后台服务进程已经在 ...
- 搭建webassembly网页播放器(六)---websocket后台服务程序
这里我们主要介绍后台搭建技术,前端搭建好后,需要后端配置展现,实现的效果就是 :网页连接上我们的 websocket服务后,我们就从H264文件中不断的提取出H264帧,然后传递给前端,前端调用web ...
- C# Net6开发Linux守护进程(后台服务程序,类似Windows服务)案例
C# Net6开发Linux守护进程(后台服务程序,类似Windows服务)案例 背景 C# net6开发Linux守护进程要点 背景 在使用net6开发Linux程序时,除了AspNet Core项 ...
- QT后台监控键盘和鼠标
目录 一.QT程序激活状态下的监控: 二.QT程序非激活状态下的监控 一.QT程序激活状态下的监控: 主要方法:重写键盘.鼠标事件(教程多,略过) void mouseMoveEvent(QMouse ...
- html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
目录 背景 演示及源码 背景 因为前些日子,去了XX培训,看到某公司写的软件,简直惊艳无比,如果使用Qt传统的widgets来写,辣么,将会是无比的复杂. 如果使用qml去写,难道稍微降低了一点点,但 ...
- 打印机后台服务程序没有运行的解决办法
最近有很多用户询问打印机后台服务没有运行的问题.那么打印机后台服务没有运行应该怎么做呢?下面我就来介绍一下打印机后台服务没有运行的解决方法. 1.打开控制面板→管理工具→服务,在右侧选择 " ...
最新文章
- r语言siggenes包_初探R语言可视化交互式包plotly——旭日图(Sunburst Chart)
- 函数或变量 rtenslearn_c 无法识别_Stata:过度识别检验一文读懂
- hdu3613(扩展KMP)
- LeetCode之Rotate Array
- 计算机控制考试试卷及答案,计算机控制系统A考试试卷带答案.doc
- 华为EMUI10的美学哲思:让美不止初见
- C#数组和list集合的区别
- vlan未能连接服务器,PC单机局域网连接VLAN的方法
- 97. ExtJS之EditorGridPanel afteredit属性
- python图片换脸_无需PS,200 行 Python 代码实现简单图片人像识别换脸
- no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.
- 软件需求分析期末试题
- 现代软件工程讨论第一章-第四章
- App自动化测试介绍和环境搭建
- 傅里叶变换的相关公式
- 蒲公英分布平台下载更新实现
- [4G5G专题-92]:流程 - 4G LTE 终端在RRC IDLE空闲状态下的小区选择与小区重选
- 信创办公--基于WPS的Word最佳实践系列(快速自定义访问工具栏)——以添加“输出为PPTX”命令为例
- 下载Visual Studio
- 如何在网页点击按钮显示的图片
热门文章
- CVPR 2018 论文解读集锦(9月26日更新)
- 了解和使用类库(47)
- mysql.service failed because the control process exited with error code问题
- 一枚角度渐变描边 loading 图标的 SVG 修炼之路
- iOS UI_APPEARANCE_SELECTOR
- [译]Front-end-Developer-Interview-Questions
- zabbix 代理(agent)端详细安装配置
- 11.2.0.2 HAIP
- 带你攀顶云端高级认证,有这回事?
- Google Analytics虚拟页面和事件追踪的区别