狂码一生_优质编程技术资源与您共享

狂码一生_优质编程技术资源与您共享

狂码一生技术博客站主要是以优质编程技术资源共享为核心,以交流学习为目的搭建的在线平台。我们共享一些优质的资源出来,供同行业的同胞交流与学习,让彼此之间在自身的技术上得到提升,本站主要提供程序方面的资源给大家,像PHP,C++,Javascript,html,asp.net,数据库等等方面的资源,本站计划将在后期会不断完善,建设更多类目的资源,希望能得到更多同行的支持!

vc/mfc 数据库连接字符串的写法

/*

名称:系统服务管理

语言:C++

介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码

*/

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;

}



版权声明: 源文来自博客园,点击这里查看源文!
[若此文确切存在侵权,请联系本站管理员进行删除!]

评论