Qt 设置某项Windows服务的启动方式
来源:互联网 发布:linux下串口调试 编辑:程序博客网 时间:2024/06/05 15:53
头文件
#ifndef SERVICECONTROLLER_H#define SERVICECONTROLLER_H#include <QObject>#include <QProcess>#include <QTextCodec>#include <QStringList>#include <QDebug>#define mDebug(x) (qDebug() << "Debug " + QString(__DATE__).replace(" ",".") + " " + QString(__TIME__) + " " + QString(__FILE__) + " " + QString(__FUNCTION__) + " " + QString::number(__LINE__) + ">>" + " " + x)class ServiceController : public QObject{ Q_OBJECTpublic: ServiceController(QString serviceName); typedef enum{Auto,Manual,Disabled,Delayed_Auto} StartType;//自动、手动、禁用、自动启动(延迟) #ifdef Q_OS_WIN void start(); void stop(); void setStartType(StartType type);#endifprivate: QString serviceName; QProcess *process;private slots: void readReult();//读取运行结果};#endif // SERVICECONTROLLER_H
源文件
#include "servicecontroller.h"ServiceController::ServiceController(QString serviceName): serviceName(serviceName){ process = new QProcess(); connect(process,SIGNAL(readyRead()),this,SLOT(readReult()));}#ifdef Q_OS_WIN/** * @brief ServiceController::setStartType 设置服务的启动类型(需要管理员权限) * @param type 服务启动类型 */void ServiceController::setStartType(StartType type){ QStringList args; args<<"config"<<serviceName<<"start="; switch (type) { case Auto: process->start("sc",args<<"auto"); break; case Manual: process->start("sc",args<<"demand"); break; case Disabled: process->start("sc",args<<"disabled"); break; case Delayed_Auto: process->start("sc",args<<"delayed-auto"); break; default: break; } process->waitForFinished();}void ServiceController::start(){ process->start("sc",QStringList()<<"start"<<serviceName); process->waitForFinished();}void ServiceController::stop(){ process->start("sc",QStringList()<<"stop"<<serviceName); process->waitForFinished();}#endifvoid ServiceController::readReult(){ QByteArray bytes = process->readAll(); QTextCodec *gbk = QTextCodec::codecForName("gb2312"); QString data = gbk->toUnicode(bytes); if(!data.isEmpty()){ mDebug(data); }}
调用方法
//首先包含头文件 #include "servicecontroller.h" //调用 ServiceController service("Apache2.4"); service.setStartType(ServiceController::Manual) //手动启动
阅读全文
1 0
- Qt 设置某项Windows服务的启动方式
- Windows Service开发日志四(用程序设置服务的运行状态及启动方式)
- windows设置TOMCAT启动服务
- 服务的启动方式
- svn的启动方式设置为windos服务
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux中设置服务自启动的三种方式
- Linux设置服务自启动的三种方式
- java开发环境的搭建(基础配置二 ——Eclipse)
- 关于内购的那些坑
- WUST OJ 1349 TLE(简单DP)
- HDU
- QT5.5.0版本添加icon图标步骤
- Qt 设置某项Windows服务的启动方式
- Vue不是内布指令的问题
- 移动端页面滑动轮播
- 【TFS权限管理】管理 TFS 中用户或组
- js正则表达式--第九天
- Ubuntu14.04 Mate 部署文件管理系统
- opencv onMouseAction
- hdu 5446 lucas + 中国剩余定理 + 快速乘 (快速乘板子,中国剩余定理板子,lucas最新板子)
- spring事务管理方式