如题,多谢!

解决方案 »

  1.   

    代码片断,自已看吧,看不懂问我再void CPhoneSvrManageDlg::OnOpStartsvr() 
    {
    // TODO: Add your command handler code here
    SC_HANDLE  sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    if(sh == NULL)
    {
    ErrorMessageBox();
    return;
    } SC_HANDLE  ss = OpenService(sh, "GameNicePhoneSvr", SERVICE_ALL_ACCESS); if(ss == NULL)
    {
    CloseServiceHandle(sh);
    ErrorMessageBox();
    return; } if(!StartService(ss, 0, NULL))
    {
    ErrorMessageBox();
    } CloseServiceHandle(ss);
    CloseServiceHandle(sh);
    }void CPhoneSvrManageDlg::OnOpStop() 
    {
    // TODO: Add your command handler code here
    SC_HANDLE  sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    if(sh == NULL)
    {
    ErrorMessageBox();
    return;
    } SC_HANDLE  ss = OpenService(sh, "GameNicePhoneSvr", SERVICE_ALL_ACCESS); if(ss == NULL)
    {
    CloseServiceHandle(sh);
    ErrorMessageBox();
    return; } SERVICE_STATUS ssStatus; if(!ControlService(ss, SERVICE_CONTROL_STOP, &ssStatus))
    {
    ErrorMessageBox();
    } Sleep(100);    while( QueryServiceStatus( ss, &ssStatus ) )
        {
            if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
            {
                Sleep( 100 );
            }
            else
                break;
        }    if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
    {
    }else
    {
    MessageBox("无法停止服务!", "Error!", MB_OK|MB_ICONSTOP);
    } CloseServiceHandle(ss);
    CloseServiceHandle(sh);

    }
      

  2.   

    TO xqk(夏乾坤):
           THKS!
    我在msconfig里禁用"Test it"服务后,再用你的代码:
    void CCPhoneSvrManageDlg::OnOpStop() 
    {
    // TODO: Add your control notification handler code here
     //  TODO:  Add  your  command  handler  code  here  
               SC_HANDLE    sh  =  OpenSCManager(NULL,  NULL,  SC_MANAGER_ALL_ACCESS);  
               if(sh  ==  NULL)  
               {  
                           ErrorMessageBox();  
                           return;  
               }  
     
               SC_HANDLE    ss  =  OpenService(sh,    "Test it",  SERVICE_ALL_ACCESS);  
     
               if(ss  ==  NULL)  
               {  
                           CloseServiceHandle(sh);  
                           ErrorMessageBox();  
                           return;  
     
               }  
     
               SERVICE_STATUS  ssStatus;  
     
               if(!ControlService(ss,  SERVICE_CONTROL_STOP,  &ssStatus))  
               {  
                           ErrorMessageBox();  
               }  
     
               Sleep(100);  
     
           while(  QueryServiceStatus(  ss,  &ssStatus  )  )  
           {  
                   if  (  ssStatus.dwCurrentState  ==  SERVICE_STOP_PENDING  )  
                   {  
                           Sleep(  100  );  
                   }  
                   else  
                           break;  
           }  
     
           if  (  ssStatus.dwCurrentState  ==  SERVICE_STOPPED  )  
               {  
               }else  
               {  
                           MessageBox(  "无法停止服务!  ",    "Error!  ",  MB_OK  |MB_ICONSTOP);  
               }  
     
               CloseServiceHandle(ss);  
               CloseServiceHandle(sh);  }void CCPhoneSvrManageDlg::OnOpStartsvr() 
    {
    // TODO: Add your control notification handler code here
    //  TODO:  Add  your  command  handler  code  here  
               SC_HANDLE    sh  =  OpenSCManager(NULL,  NULL,  SC_MANAGER_ALL_ACCESS);  
               if(sh  ==  NULL)  
               {  
                           ErrorMessageBox();  
                           return;  
               }  
     
               SC_HANDLE    ss  =  OpenService(sh,    "Test it",  SERVICE_ALL_ACCESS);  
     
               if(ss  ==  NULL)  
               {  
                           CloseServiceHandle(sh);  
                           ErrorMessageBox();  
                           return;  
     
               }  
     
               if(!StartService(ss,  0,  NULL))  
               {  
                           ErrorMessageBox();  
               }  
     
               CloseServiceHandle(ss);  
               CloseServiceHandle(sh);  }void CCPhoneSvrManageDlg::ErrorMessageBox()
    {
    LPVOID lpMsgBuf;
    FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        0, // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL 
    );
    // Display the string.
    ::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
    // Free the buffer.
    LocalFree( lpMsgBuf );
    }出现如下提示:
         无法启动服务,原因可能是已被禁用或与其关联的设备没有启动注:我的Test it 服务不依赖其他服务。
       
       好象代码没有重新启用Test it 服务哦。麻烦您再帮忙看看,谢谢!
      

  3.   

    好象注册表里
    “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Test it”,将Start项的值修由00000004改为“00000002”,有点作用。但结果不太理想。