当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: #include "iostream.h" class cb; class ca { private: cb* pb; public: int geti(); }; int ca::geti() { pb=new cb; return pb->geti(); } class cb { public: cb(); public: ca *pa; priv......
 ·有关paradox的问题    »显示摘要«
    摘要: 各位:当paradox表达到几十万记录后,不能写入,提示“table is full”,该怎么办? ......


在Windows NT/W2K下,如何枚举出所有安装的 NT Service服务程序名字,就象SCM那样

How   can   I   enum   all   services   installed   on   the   system   of   Windows   NT/W2K,  
  just   as   SCM   did.  
   
  Thanks   in   advance  
 

NO.1   作者: seanzhao

忘了从哪抄的了:  
   
  void   CNetSearchDlg::CheckService(char   *   pHostName)  
  {  
  char   sBuf[256];  
  UINT   nCount   =   1,   nItemCount   =   0;    
  ENUM_SERVICE_STATUS   *lpSrv   =   (ENUM_SERVICE_STATUS   *)malloc(sizeof(ENUM_SERVICE_STATUS));  
  DWORD   dwNeeded   =   0,   dwSrvRet   =   0,   dwResumeHandle   =   0;  
   
  dwResumeHandle   =   0;  
   
  SC_HANDLE   hSCManager   =   OpenSCManager(pHostName,   NULL,   GENERIC_READ);  
   
  int   temp   =   GetLastError();  
   
  _retry_:  
  BOOL   bRet   =   EnumServicesStatus(hSCManager,    
  SERVICE_WIN32,   SERVICE_STATE_ALL,   lpSrv,   sizeof(ENUM_SERVICE_STATUS)   *   nCount,    
  &dwNeeded,   &dwSrvRet,   &dwResumeHandle);  
   
  for(UINT   x   =   0;   x   <   dwSrvRet;   x++)  
  {  
  nItemCount++;  
   
  CString   strAux;  
  sprintf(sBuf,"%-30s   :   %s\n",lpSrv[x].lpDisplayName,lpSrv[x].lpServiceName);  
   
  m_list.InsertString(-1,sBuf);  
   
  }  
   
  if(!bRet)  
  {  
  int   g_dwLastError   =   GetLastError();  
   
  if((g_dwLastError   ==   ERROR_MORE_DATA)   ||   (nCount   *   sizeof(ENUM_SERVICE_STATUS)   <   dwNeeded))  
  {  
  nCount++;  
   
  if(lpSrv)  
  {  
  lpSrv   =   (ENUM_SERVICE_STATUS   *)realloc(lpSrv,    
  sizeof(ENUM_SERVICE_STATUS)   *   nCount);  
  if(!lpSrv)  
  goto   _exit_;  
  }  
  else  
  {  
  lpSrv   =   (ENUM_SERVICE_STATUS   *)malloc(sizeof(ENUM_SERVICE_STATUS)   *   nCount);  
  if(!lpSrv)  
  goto   _exit_;  
  }  
   
  goto   _retry_;  
  }  
  else  
  goto   _exit_;  
  }  
   
  _exit_:  
  if(lpSrv)  
  free(lpSrv);  
   
   
  CloseServiceHandle(hSCManager);  
  }  
 

NO.2   作者: plainsong

BOOL   EnumServicesStatus(  
      SC_HANDLE   hSCManager,                           //   handle   to   SCM   database  
      DWORD   dwServiceType,                             //   service   type  
      DWORD   dwServiceState,                           //   service   state  
      LPENUM_SERVICE_STATUS   lpServices,   //   status   buffer  
      DWORD   cbBufSize,                                     //   size   of   status   buffer  
      LPDWORD   pcbBytesNeeded,                       //   buffer   size   needed  
      LPDWORD   lpServicesReturned,               //   number   of   entries   returned  
      LPDWORD   lpResumeHandle                         //   next   entry  
  );  
   
   
            轻风又伤心了:2002-06-04  
            ____           ____  
            \   p   \       /   g   /  
              \   l   \_/   n   /  
                \   a       o   /  
                  \   i   s   /  
                    \   n   /  
                      \_/  
 


 ·哪里可以找到ie web controls    »显示摘要«
    摘要: 我怎样才能找到ie web controls? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE