Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303342
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -40
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-08 00:28
文章分类

全部博文(163)

文章存档

2015年(2)

2014年(35)

2013年(28)

2012年(30)

2011年(22)

2010年(14)

2009年(8)

2008年(13)

2007年(11)

分类: C/C++

2008-05-22 00:21:58

写了一个监控服务的程序,共享上来,大家共同学习一下.网上找了很久,没什么收获,就自己写了一个.
 
CMonitorServiceDlg *g_pDlg = NULL;
DWORD WINAPI MonitorServices(LPVOID lpParameter)
{
    char serviceName[128];
    memset(serviceName, 0, sizeof(serviceName));
    sprintf(serviceName, "Data Acquisition Service");
    SetDlgItemText(g_pDlg->m_hWnd, IDC_SERVICE_NAME, serviceName);
    SC_HANDLE schSCManager = NULL, schService = NULL;
    SERVICE_STATUS ssStatus;
    DWORD dwOldCheckPoint;
    try
    {
        schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        if (schSCManager != NULL)
        {
            schService = OpenService(schSCManager, serviceName, SC_MANAGER_ALL_ACCESS);
            if (schSCManager != NULL)
            {
                while (true)
                {
                    if (QueryServiceStatus(
                        schService,        //   handle   to   service
                        &ssStatus) )     //   address   of   status   information
                    {
                        if (ssStatus.dwCurrentState == SERVICE_STOPPED)
                        {
                            StartService(schService, 0, NULL);
                            Sleep(20000);
                        }
                    }
                }
            }
        }
    }
    catch(...)
    {
    }
    if (schService) CloseServiceHandle(schService);
    if (schSCManager) CloseServiceHandle(schSCManager);
    return 0;
}
 
上面只写了一个线程代码,这个是主体程序.
 
1.schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
打开服务控制管理.
2.schService = OpenService(schSCManager, serviceName, SC_MANAGER_ALL_ACCESS);
打开指定服务,获取服务句柄.
3.QueryServiceStatus(schService, &ssStatus)
查询指定服务句柄的状态.
4.CloseServiceHandle(schService);
关闭服务句柄.(与线程一样)
阅读(1698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~