快速业务通道

WindowsNT下Service编程

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
********************
* 枚举NT系统当服务并启动或终止之。
* Edited by 黑山老妖
* 2002.8.9
****************************************************************************/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD BytesNeeded,serviceReturned,resumeHandle;
bool returnflag;
TEnumServiceStatus lpservice[100];
TEnumServiceStatus service;
DWORD i,bytes;
ListBox1->Items->Clear();
returnflag=false;
resumeHandle=0;
hscmanager=OpenSCManager(NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE);//打开service control manager database
if (hscmanager<0)
  {
  ShowMessage("无法打开service control manager database");
  return;
  }
returnflag=EnumServicesStatus(hscmanager,SERVICE_DRIVER,SERVICE_ACTIVE,&service,sizeof(service),&BytesNeeded,&serviceReturned,&resumeHandle);//枚举Service
if(!returnflag&&GetLastError()==ERROR_MORE_DATA)
  {
  bytes=BytesNeeded+sizeof(TEnumServiceStatus);
  EnumServicesStatus(hscmanager,SERVICE_DRIVER,SERVICE_ACTIVE,&lpservice[0],bytes,&BytesNeeded,&serviceReturned,&resumeHandle);
  for(i=0;i<serviceReturned-1;i++)
   {
   ListBox1->Items->Add(lpservice[i].lpServiceName);
   }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i;
for(i=0;i<ListBox1->Items->Count;i++)
  {
  if(ListBox1->Selected[i])
   {
   hService=OpenService(hscmanager,PChar(ListBox1->Items->Strings[i].c_str()),SERVICE_ALL_ACCESS);//打开该Service
   if(hService<0)
    {
    ShowMessage("无法打开该服务!");
    return;
    }
   QueryServiceStatus(hService,&returnstatus);//查看该Service的状态
   if(returnstatus.dwCurrentState==SERVICE_STOPPED)//如果该Service已停止则启动它
   //SERVICE_STOPPED==1,SERVICE_RUNNING==4 老妖注。
    {
    if(StartService(hService,0,NULL))
     ShowMessage("启动成功!");
    else
     ShowMessage("无法启动该服务!");
    }
   CloseServiceHandle(hService);//关闭该Service
   }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i;
for(i=0;i<ListBox1->Items->Count;i++)
  {
  if(ListBox1->Selected[i])
   {
   hService=OpenService(hscmanager,PChar(ListBox1->Items->Strings[i].c_str()),SERVICE_ALL_ACCESS);//打开该Service
   if(hService<0)
    {
    ShowMessage("无法打开该Service");
    return;
    }
   QueryServiceStatus(hService,&returnstatus);//查看该Service的状态
   if(returnstatus.dwCurrentState==SERVICE_RUNNING) //如果该Service正在运行则停止它
    {
    if(ControlService(hService,SERVICE_CONTROL_STOP,&returnstatus))
     ShowMessage("成功停止!");
    else
     ShowMessage("无法停止该服务!");
    }
   CloseServiceHandle(hService);//关闭该Service
   }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号