CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

怎么停止一个服务???

楼主xxxxxxxxx()2005-07-29 17:33:59 在 Delphi / Windows SDK/API 提问

除了用net   stop   'ddd'       有没有API可以停止一个服务啊。 问题点数:100、回复次数:1Top

1 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2005-07-29 17:53:52 得分 100

ZT:  
   
  unit   Unit1;    
   
  interface  
   
  uses  
  Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
  Dialogs,   StdCtrls,Winsvc;  
   
  type  
  TForm1   =   class(TForm)  
  Button1:   TButton;  
  Button2:   TButton;  
  procedure   FormCreate(Sender:   TObject);  
  procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
  procedure   Button1Click(Sender:   TObject);  
  procedure   Button2Click(Sender:   TObject);  
  private  
  schService:SC_HANDLE;  
  schSCManager:SC_HANDLE;  
  ssStatus:TServiceStatus;  
  {   Private   declarations   }  
  public  
  {   Public   declarations   }  
  end;  
   
  var  
  Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
  schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);  
  schService:=OpenService(schSCManager,'alerter',SERVICE_ALL_ACCESS);  
  end;  
   
  procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
  begin  
  CloseServiceHandle(schService);  
  CloseServiceHandle(schSCManager);  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  Argv:PChar;  
  begin  
  if   StartService(schService,0,Argv)   then  
  begin  
  form1.caption:='Start   Service   Now   ';  
  Sleep(1000);  
  while   (QueryServiceStatus(schService,ssStatus))   do  
  begin  
  Application.ProcessMessages;  
  if   ssStatus.dwCurrentState=SERVICE_START_PENDING   then  
  begin  
  form1.caption:=form1.caption+('.');  
  Sleep(1000);  
  end   else   break;  
  end;  
  if   ssStatus.dwCurrentState=SERVICE_RUNNING   then  
  form1.caption:='Service   Start   Ok'  
  else   form1.caption:='Service   Start   Fail';  
  end  
  else   form1.caption:='Service   Start   Fail';  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
  if   ControlService(schService,SERVICE_CONTROL_STOP,ssStatus)   then  
  begin  
  form1.caption:='Stopping   Service   Now   ';  
  Sleep(1000);  
  while   (QueryServiceStatus(schService,ssStatus))   do  
  begin  
  Application.ProcessMessages;  
  if   ssStatus.dwCurrentState=SERVICE_STOP_PENDING   then  
  begin  
  form1.caption:=form1.caption+('.');  
  Sleep(1000);  
  end   else   break;  
  end;  
  if   ssStatus.dwCurrentState=SERVICE_STOPPED   then  
  form1.caption:='Service   Stop   Ok'  
  else   form1.caption:='Service   Stop   Fail';  
  end  
  else   form1.caption:='Service   Stop   Fail';  
  end;  
  end.  
   
  把上面的alerter改成你要启动或停止的服务就行了  
   
  _____________________  
  comment   by   Liu   Yang  
  http://lysoft.7u7.net  
  QQ   Group:   7858482Top

相关问题

  • 信息服务器意外停止服务,怎么回事?
  • 怎么样才能让服务停止不了呢?
  • 停止Sql服务
  • 我的information store服务总是自己停止请问是怎么回事
  • 我要启动和停止系统服务中的一个服务如(Print Spooler) 程序怎么控制?
  • 停止服务的问题
  • 当客户端发出连接请求后,我的服务端就要停止监听,怎么办?
  • 我停止了不该停止的服务
  • 能不能在客户机上控制服务器上的tomcat启动,停止服务?怎么实现?急,在线等,解决就结贴!!!
  • 请问:想在程序运行时更改菜单项文本,如将“启动服务”改为“停止服务”,怎么做?

关键词

  • sleep
  • service
  • start
  • ssstatus
  • schservice
  • thenbeginform
  • caption
  • tobject
  • dwcurrentstate
  • schscmanager

得分解答快速导航

  • 帖主:xxxxxxxxx
  • ly_liuyang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo