vc++启动和停止服务
来源:互联网 发布:药源网数据库 编辑:程序博客网 时间:2024/04/29 09:08
vc++启动和停止服务
分类: vc++2007-04-25 01:43 6998人阅读 评论(0) 收藏 举报
vc++servicenullweb服务query
包含头文件:#include <winsvc.h>
以下以web服务为例:
#include <winsvc.h>
void CStartServiceDlg::OnBnClickedButton1()
{
// 打开服务管理对象
SC_HANDLE hSC = ::OpenSCManager( NULL,
NULL, GENERIC_EXECUTE);
if( hSC == NULL)
{
TRACE( "open SCManager error");
return;
}
// 打开www服务。
SC_HANDLE hSvc = ::OpenService( hSC, "W3SVC",
SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
if( hSvc == NULL)
{
TRACE( "Open www erron。");
::CloseServiceHandle( hSC);
return;
}
// 获得服务的状态
SERVICE_STATUS status;
if( ::QueryServiceStatus( hSvc, &status) == FALSE)
{
TRACE( "Get Service state error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
//如果处于停止状态则启动服务,否则停止服务。
if( status.dwCurrentState == SERVICE_RUNNING)
{
// 停止服务
if( ::ControlService( hSvc,
SERVICE_CONTROL_STOP, &status) == FALSE)
{
TRACE( "stop service error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
// 等待服务停止
while( ::QueryServiceStatus( hSvc, &status) == TRUE)
{
::Sleep( status.dwWaitHint);
if( status.dwCurrentState == SERVICE_STOPPED)
{
AfxMessageBox( "stop success。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
}
}
else if( status.dwCurrentState == SERVICE_STOPPED)
{
// 启动服务
if( ::StartService( hSvc, NULL, NULL) == FALSE)
{
TRACE( "start service error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
// 等待服务启动
while( ::QueryServiceStatus( hSvc, &status) == TRUE)
{
::Sleep( status.dwWaitHint);
if( status.dwCurrentState == SERVICE_RUNNING)
{
AfxMessageBox( "start success。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
}
}
TRACE( "start error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
以下以web服务为例:
#include <winsvc.h>
void CStartServiceDlg::OnBnClickedButton1()
{
// 打开服务管理对象
SC_HANDLE hSC = ::OpenSCManager( NULL,
NULL, GENERIC_EXECUTE);
if( hSC == NULL)
{
TRACE( "open SCManager error");
return;
}
// 打开www服务。
SC_HANDLE hSvc = ::OpenService( hSC, "W3SVC",
SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
if( hSvc == NULL)
{
TRACE( "Open www erron。");
::CloseServiceHandle( hSC);
return;
}
// 获得服务的状态
SERVICE_STATUS status;
if( ::QueryServiceStatus( hSvc, &status) == FALSE)
{
TRACE( "Get Service state error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
//如果处于停止状态则启动服务,否则停止服务。
if( status.dwCurrentState == SERVICE_RUNNING)
{
// 停止服务
if( ::ControlService( hSvc,
SERVICE_CONTROL_STOP, &status) == FALSE)
{
TRACE( "stop service error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
// 等待服务停止
while( ::QueryServiceStatus( hSvc, &status) == TRUE)
{
::Sleep( status.dwWaitHint);
if( status.dwCurrentState == SERVICE_STOPPED)
{
AfxMessageBox( "stop success。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
}
}
else if( status.dwCurrentState == SERVICE_STOPPED)
{
// 启动服务
if( ::StartService( hSvc, NULL, NULL) == FALSE)
{
TRACE( "start service error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
// 等待服务启动
while( ::QueryServiceStatus( hSvc, &status) == TRUE)
{
::Sleep( status.dwWaitHint);
if( status.dwCurrentState == SERVICE_RUNNING)
{
AfxMessageBox( "start success。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
}
}
TRACE( "start error。");
::CloseServiceHandle( hSvc);
::CloseServiceHandle( hSC);
return;
}
0 0
- vc++启动和停止服务
- vc++启动和停止服务
- vc++启动和停止服务
- vc++启动和停止服务
- vc++启动和停止服务
- vc 启动和停止服务
- VC启动和停止windows系统服务
- 启动和停止服务
- 启动和停止Postfix服务
- 批处理启动和停止服务
- 启动和停止MySQL服务
- 启动和停止MySQL服务
- 启动和停止MySQL服务
- 批处理文件启动和停止服务
- 启动和停止MySQL服务
- 启动和停止MySQL服务
- redis服务启动和停止
- redis服务启动和停止
- AE c# 添加比例尺和指北针
- [论文]基于Kinect的实时人脸识别系统
- 话说程序员的职业生涯
- win32 014 使用ResEdit 资源编译器 可视化编程 资源的编写
- 使用ajax时的一个小教训
- vc++启动和停止服务
- Velocity Example终于跑起来了。
- 在 ActionBar 添加刷新按钮
- zend studio 5.5 快捷键
- js数组依据下标删除元素
- sed 暂存空间详解
- jdk1.5 后 的新特性—枚举
- powerDesigner学习一
- netshareadd