⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcjq088.txt

📁 c++ builder 的一些txt文档
💻 TXT
📖 第 1 页 / 共 2 页
字号:
 
    }
 
    
 
    
 
    在ServiceMain()中应该立即调用
 
    RegisterServiceCtrlHandler()注册一个Handler
 
    去处理控制程序或控制面板对Service的控制要求。
 
    
 
    
 
    
 
    Handler()被转发器调用去处理要求,
 
    下面是Handler()的源代码:
 
    void WINAPI Handler(DWORD Opcode)
 
    {
 
  switch(Opcode)
 
  {
 
    case SERVICE_CONTROL_STOP:  //停止Service
 
		Mycode();//这儿可放入用户自己的相关代码
 
        ss.dwWin32ExitCode = 0;
 
        ss.dwCurrentState  =SERVICE_STOPPED;
    //把Service的当前状态置为STOP
        ss.dwCheckPoint    = 0;
 
        ss.dwWaitHint      = 0;
 
        SetServiceStatus (ssh,&ss);
 
 /必须随时更新数据库中Service的状态
 
        break;
 
    case SERVICE_CONTROL_INTERROGATE:
 
    SetServiceStatus (ssh,&ss);
 
 /必须随时更新数据库中Service的状态
 
        break;
 
   }
 
    }
 
    
 
    
 
    ---- 好了,Service本体程序已基本完成,我们接着来看一下Service的控制程序:
    ---- 控制程序是一个标准的window程序,上面主要有四个按纽:Create Service、Delete Service、start、stop,分别用来产生、删除、开始和停止Service。下面是它们的部分源代码:
    
    1. 产生Service
 
    void __fastcall TForm1::CreateBtnClick
 
    (TObject *Sender)
 
    {
 
    scm=OpenSCManager(NULL,NULL,
 
    SC_MANAGER_CREATE_SERVICE);
 
	if (scm!=NULL){
 
		svc=CreateService(scm,
 
    "W.Z.SERVICE","W.Z.SERVICE",//Service名字
 
    SERVICE_ALL_ACCESS,
 
	SERVICE_WIN32_OWN_PROCESS
          |SERVICE_INTERACTIVE_PROCESS,
	SERVICE_AUTO_START,
    //以自动方式开始
 SERVICE_ERROR_IGNORE,
 "C:\\ntservice.exe", //Service本体程序路径,
 
    必须与具体位置相符
 
  NULL,NULL,NULL,NULL,NULL);
 
        if (svc!=NULL)
 
 CloseServiceHandle(svc);
 
  CloseServiceHandle(scm);
 
    }
 
    }
 
    
 
    2. 删除Service
 
    void __fastcall TForm1::DeleteBtnClick
 
    (TObject *Sender)
 
    {
    scm=OpenSCManager(NULL,NULL,
    SC_MANAGER_CONNECT);
	if (scm!=NULL){
 
        svc=OpenService(scm,"W.Z.SERVICE",
 
    SERVICE_ALL_ACCESS);
 
        if (svc!=NULL){
 
    QueryServiceStatus(svc,&ServiceStatus);
 
 if (ServiceStatus.dwCurrentState==
 
    SERVICE_RUNNING)//删除前,先停止此Service.
 
                ControlService(svc,
 
    SERVICE_CONTROL_STOP,&ServiceStatus);
 
            DeleteService(svc);
 
            CloseServiceHandle(svc);
 
 //删除Service后,最好再调用CloseServiceHandle
 
        }
 //以便立即从数据库中移走此条目。
       CloseServiceHandle(scm);
    }
    }
    
    3. 开始Service
 
    void __fastcall TForm1::StartBtnClick(TObject *Sender)
 
    {
 
    scm=OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);
 
    if (scm!=NULL){
 
        svc=OpenService(scm,"W.Z.SERVICE",SERVICE_START);
 
        if (svc!=NULL){
 
            StartService(svc,0,NULL);//开始Service
 
            CloseServiceHandle(svc);
 
        }
 
        CloseServiceHandle(scm);
 
    }
 
    }
 
    
 
    4.停止Service
 
 void __fastcall TForm1::StopBtnClick
 
    (TObject *Sender)
 
    {
 
    scm=OpenSCManager(NULL,NULL,
 
    SC_MANAGER_ALL_ACCESS);
 
	if (scm!=NULL){
 
        svc=OpenService(scm,"W.Z.SERVICE",
 
    SERVICE_STOP|SERVICE_QUERY_STATUS);
 
        if (svc!=NULL){
 
            QueryServiceStatus(svc,&ServiceStatus);
 
            if (ServiceStatus.dwCurrentState==
 
    SERVICE_RUNNING)
 
                ControlService(svc,
 
    SERVICE_CONTROL_STOP,&ServiceStatus);
 
            CloseServiceHandle(svc);
 
        }
 
        CloseServiceHandle(scm);
 
    }
 
    }
 
    
 
    
 
    ---- 本程序在C++Builder 3.0和Windows NT 4.0下编译通过。 
                              
                            
                          
                              
                      
                            
                              
                            
                  if (ad==1) {document.write(''+'');}            
                  if (ad==2) {document.write(''+'');}            
                  if (ad==3) {document.write(''+'');}            
                                              
                            
                          
                        
                      
                 
                  
                    
                      
                    
                    
                        
                    
                  
                     
                   
                 
               
             
             
               
                 
                   
                     
            C++ Builder开发者®                
              2000年06月01日 站长:唐朝                
                          
                        
                      
                    
                    
                      
                    
                  
                  
                
                
                
                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -