zoukankan      html  css  js  c++  java
  • 服务的启动与停止

    //显示服务

    void CManageServiceDlg::ShowServiceList(DWORD dwServiceType)
    {
         m_ServiceList.DeleteAllItems();

         SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

         if( NULL == hSCM)
         {
              MessageBox("OpenSCManager Error!");
              return ;
         }

         DWORD dwBufSize = 512 * sizeof(ENUM_SERVICE_STATUS);
         DWORD dwByteNeeded,dwServicesReturned,lpResumeHandle = 0;
         ENUM_SERVICE_STATUS SerStatus[512] = {0};
         int bRet = EnumServicesStatus(hSCM,
                             dwServiceType,
                             SERVICE_STATE_ALL,
                             SerStatus,
                             dwBufSize,
                             &dwByteNeeded,
                             &dwServicesReturned,
                             &lpResumeHandle);

         if( FALSE == bRet)
         {
              MessageBox("EnumServiceStatus Error");
              CloseServiceHandle(hSCM);
              return;
         }
         for( DWORD i = 0; i < dwServicesReturned ; i ++)
         {
              CString str;
              str.Format("%d",i);
              m_ServiceList.InsertItem(i,str);
              m_ServiceList.SetItemText(i,1,SerStatus[i].lpServiceName);
              m_ServiceList.SetItemText(i,2,SerStatus[i].lpDisplayName);
              switch(SerStatus[i].ServiceStatus.dwCurrentState)
              {
              case SERVICE_PAUSED:
                   m_ServiceList.SetItemText(i,3,"暂停");
                   break;
              case SERVICE_STOPPED:
                   m_ServiceList.SetItemText(i,3,"停止");
                   break;
              case SERVICE_RUNNING:
                   m_ServiceList.SetItemText(i,3,"运行");
                   break;
              default:
                   m_ServiceList.SetItemText(i,3,"其他");
              }
         }
         CloseServiceHandle(hSCM);
    }



    void CManageServiceDlg::OnBtnStart()
    {
         // TODO: Add your control notification handler code here
         POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
         int nSelect = -1;

         while( pos )
         {
              nSelect = m_ServiceList.GetNextSelectedItem(pos);
         }

         if(-1 == nSelect)
         {
              MessageBox("请选择要操作的项");
              return ;
         }

         //获取选中服务的服务名
         char szServiceName[MAXBYTE] = {0};
         m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);

         SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
         if( NULL == hSCM)
         {
              MessageBox("OpenSCManager Error");
              return;
         }

         SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
         //启动服务
         int bRet = StartService(hSCService,0,NULL);
         if(bRet)
              m_ServiceList.SetItemText(nSelect,3,"运行");
         else
              int n = GetLastError();
         CloseServiceHandle(hSCService);
         CloseServiceHandle(hSCM);
    }


    void CManageServiceDlg::OnBtnStop()
    {
         // TODO: Add your control notification handler code here
         //获取选中的行
         POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
         int nSelect = -1;

         while( pos )
         {
              nSelect = m_ServiceList.GetNextSelectedItem(pos);
         }

         if(-1 == nSelect)
         {
              MessageBox("请选择要操作的项");
              return ;
         }

         //获取选中服务的服务名
         char szServiceName[MAXBYTE] = {0};
         m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);

        SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
         if(NULL == hSCM)
         {
              MessageBox("OpenSCManager Erroe");
              return ;
         }
         SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
         SERVICE_STATUS ServiceStatus;

         //停止服务
         int bRet = ControlService(hSCService,SERVICE_CONTROL_STOP,&ServiceStatus);
         if( bRet )
         {
              m_ServiceList.SetItemText(nSelect,3,"停止");
         }else
         {
              int n = GetLastError();
         }
         CloseServiceHandle(hSCService);
         CloseServiceHandle(hSCM);
    }


    void CManageServiceDlg::OnInitServerList()
    {
         m_ServiceList.SetExtendedStyle(
                   m_ServiceList.GetExtendedStyle()
                   | LVS_EX_GRIDLINES
                   | LVS_EX_FULLROWSELECT);
         m_ServiceList.InsertColumn(0,"序号",LVCFMT_LEFT);
         m_ServiceList.InsertColumn(1,"服务名",LVCFMT_LEFT);
         m_ServiceList.InsertColumn(2,"显示名",LVCFMT_LEFT);
         m_ServiceList.InsertColumn(3,"状态",LVCFMT_LEFT);

         m_ServiceList.SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER);
         m_ServiceList.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);
         m_ServiceList.SetColumnWidth(2,LVSCW_AUTOSIZE_USEHEADER);
         m_ServiceList.SetColumnWidth(3,LVSCW_AUTOSIZE_USEHEADER);
    }
  • 相关阅读:
    Tech road one step Dec-5 to Dec-11
    Tech road one step Nov-28 to Dec-4
    Tech road one step 13-Nov to 20-Nov
    Unity 相机花式分屏
    Unity渲染
    Perfect Rectangle(完美矩形)
    Max Points on a Line(直线上最多的点数)
    Unity之CharacterController 碰撞问题总结
    cocos2dx 实现flappybird
    effectiveC++ 内存管理 学习笔记
  • 原文地址:https://www.cnblogs.com/mynona/p/3162646.html
Copyright © 2011-2022 走看看