我调试了一个完整的VC检测服务、启动服务、停止服务的程
我调试了一个完整的VC检测服务、启动服务、停止服务的程序,结构不复杂,就三个函数。该例子是以系统自带的打印缓存服务(Print Spooler)为例演示的。 另外我写了个详细的开发教程,你自己熟悉一下。
// 注意,此程序适应的服务名称 仅为单字符串。 Spooler (√)Net Logon (×)
VC开发服务管理程序简单教程
一、新建VC对话框程序(此例子为SrvCheck),设计界面如下:
二、在SrvCheckDlg.cpp中加入服务相关的头文件:winsvc.h,如下图:
#include
三、在SrvCheckDlg.cpp文件末尾加入以下函数定义:
int ServiceIsRunning(LPCTSTR ServiceName) //检测是否运行 {
SC_HANDLE schService; // ?## 句柄 SC_HANDLE schSCManager;
DWORD RC; //double word 双字节
SERVICE_STATUS ssStatus; UINT return_value;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required );
// OpenSCManager函数建立了一个连接到服务控制管理器,并打开指定的数据库 if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
QueryServiceStatus(schService, &ssStatus);
if(ssStatus.dwCurrentState == SERVICE_RUNNING) return_value = 1; else return_value = 0; CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
int ServiceStart( LPCTSTR ServiceName) //启动 LPCTSTR 是一种类型 L:long P:指针 // C: 容量 T:win32环境 STR:变量是一个字符串 {
SC_HANDLE schService; SC_HANDLE schSCManager; DWORD RC;
UINT return_value;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required ); if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
return_value = StartService(schService, 0, NULL) ? 1 : -1; RC = GetLastError();
CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
int ServiceStop(LPCTSTR ServiceName,ULONG TimeoutSeconds) //停止 {
SC_HANDLE schService; SC_HANDLE schSCManager; DWORD RC;
UINT return_value; SERVICE_STATUS SrvStatus;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required ); if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
return_value = ControlService(schService, SERVICE_CONTROL_STOP, &SrvStatus) ? 1 : -1;
if(return_value) {
while(QueryServiceStatus(schService, &SrvStatus)) {
if ( SrvStatus.dwCurrentState == SERVICE_STOP_PENDING ) { if(!TimeoutSeconds) break;
if(TimeoutSeconds != -1) TimeoutSeconds--;
Sleep( 1000 ); } else { break; } }
if(SrvStatus.dwCurrentState == SERVICE_STOPPED) { return_value = 1; } else {
return_value = -1; } } else {
return_value = -2; }
RC = GetLastError();
CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
四、各按钮代码如下: ①检测服务
if(ServiceIsRunning(\ MessageBox(\服务运行中......\ else MessageBox(\未检测到服务运行!\②停止服务
if(ServiceStop(\ MessageBox(\服务已停止运行!\③启动服务
if(ServiceStart(\ MessageBox(\服务已成功启动!\
Net Logon
WebClient
………………………………………………………………………………………………
void CFuwuDlg::OnButton1() { // TODO: Add your control notification handler code here
CString strTemp; GetDlgItemText(IDC_EDIT1,strTemp);
if(ServiceIsRunning(strTemp)==1) MessageBox(\服务运行中......\ else MessageBox(\未检测到服务运行!\ }
…… 此处隐藏:1334字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




