Delphi 服务操作
- unit Service;
- interface
- uses Windows,Messages,SysUtils,Winsvc,Dialogs;
- function StartServices(Const SvrName:String):Boolean;
- function StopServices(Const SvrName:String):Boolean;
- function QueryServiceStatu(Const SvrName: String):String;
- function CreateServices(Const SvrName,FilePath:String):Boolean;
- function DeleteServices(Const SvrName: String):Boolean;
- implementation
- //开启服务
- function StartServices(Const SvrName: String): Boolean;
- var
- a,b:SC_HANDLE;
- c:PChar;
- begin
- Result:=False;
- a:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
- if a <=0 then Exit;
- b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
- if b <=0 then Exit;
- try
- Result:=StartService(b,0,c);
- CloseServiceHandle(b);
- CloseServiceHandle(a);
- except
- CloseServiceHandle(b);
- CloseServiceHandle(a);
- Exit;
- end;
- end;
- //停止服务
- function StopServices(Const SvrName: String): Boolean;
- var
- a,b: SC_HANDLE;
- d: TServiceStatus;
- begin
- Result := False;
- a :=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
- if a <=0 then Exit;
- b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
- if b <=0 then Exit;
- try
- Result:=ControlService(b,SERVICE_CONTROL_STOP,d);
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- except
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- Exit;
- end;
- end;
- //查询当前服务的状态
- function QueryServiceStatu(Const SvrName: String): String;
- var
- a,b: SC_HANDLE;
- d: TServiceStatus;
- begin
- Result := '未安装';
- a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
- if a <=0 then Exit;
- b := OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
- if b <= 0 then Exit;
- try
- QueryServiceStatus(b,d);
- if d.dwCurrentState = SERVICE_RUNNING then
- Result := '启动' //Run
- else if d.dwCurrentState = SERVICE_RUNNING then
- Result := 'Wait' //Runing
- else if d.dwCurrentState = SERVICE_START_PENDING then
- Result := 'Wait' //Pause
- else if d.dwCurrentState = SERVICE_STOP_PENDING then
- Result := '停止' //Pause
- else if d.dwCurrentState = SERVICE_PAUSED then
- Result := '暂停' //Pause
- else if d.dwCurrentState = SERVICE_STOPPED then
- Result := '停止' //Stop
- else if d.dwCurrentState = SERVICE_CONTINUE_PENDING then
- Result := 'Wait' //Pause
- else if d.dwCurrentState = SERVICE_PAUSE_PENDING then
- Result := 'Wait'; //Pause
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- except
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- Exit;
- end;
- end;
- {建立服务}
- function CreateServices(Const SvrName,FilePath: String): Boolean;
- var
- a,b:SC_HANDLE;
- begin
- Result:=False;
- if FilePath ='' then Exit;
- a := OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);
- if a <= 0 then Exit;
- try
- b := CreateService(a,PChar(SvrName),
- PChar(SvrName),
- SERVICE_ALL_ACCESS,
- SERVICE_INTERACTIVE_PROCESS or SERVICE_WIN32_OWN_PROCESS,
- SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,
- PChar(FilePath),nil,nil,nil,nil,nil);
- if b <= 0 then begin
- ShowMessage( SysErrorMessage( GetlastError ));
- Exit;
- end;
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- Result := True;
- except
- CloseServiceHandle(a);
- CloseServiceHandle(b);
- Exit;
- end;
- end;
- {卸载服务}
- function DeleteServices(Const SvrName: String): Boolean;
- var
- a,b:SC_HANDLE;
- begin
- Result:=False;
- a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
- if a <= 0 then Exit;
- b :=OpenService(a,PChar(SvrName),STANDARD_RIGHTS_REQUIRED);
- if b <= 0 then Exit;
- try
- Result := DeleteService(b);
- if not Result then
- ShowMessage(SysErrorMessage(GetlastError));
- CloseServiceHandle(b);
- CloseServiceHandle(a);
- except
- CloseServiceHandle(b);
- CloseServiceHandle(a);
- Exit;
- end;
- end;
- end.
- 调用方法:
- {启动服务}
- StartServices(服务名);
- {停止服务}
- StopServices(服务名);
- {新建服务}
- CreateServices(服务名,exe文件路径);
- {删除服务}
- DeleteServices(服务名);
- {获取服务状态}
- string:=QueryServiceStatu(服务名);
http://blog.csdn.net/yanjiaye520/article/details/7840911
Delphi 服务操作的更多相关文章
- delphi xe10 手机程序事件服务操作、退出键操作
//程序事件服务操作 var FMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.C ...
- Delphi服务端和PHP客户端通过Socket通信
在开始之前看下效果 PHP页面作为客户端发送请求给作为服务端的Delphi应用程序 PHP客户端页面打开如下 Delphi服务端应用程序打开如下 每次PHP页面刷新一下,Delphi的文本框都显示&q ...
- 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)
注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...
- Delphi Excel 操作大全
Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...
- delphi 换行操作 Word
delphi 换行操作 我将我的商用<旅行社管理系统>的 发团通知 部分奉献给您,望对您有所帮助. procedure TFrmMain.N327Click(Sender: TObject ...
- Dynamics AX 2012 R2 在增强入站端口中找不到自定义服务操作
Reinhard写好自定义服务A,添加好服务操作A1,A2,A3..... 然后,Reinhard在增强的入站端口,选择服务操作时,却找不到这些A1,A2,A3. 查找相关资料 ...
- Delphi摄像头操作
/*Title:Delphi摄像头操作 *Author:Insun *Blog:http://yxmhero1989.blog.163.com *From:www.4safer.com */ 为了笔耕 ...
- Delphi内存操作API函数(备查,并一一学习)
Delphi内存操作API函数System.IsMemoryManagerSet;System.Move;System.New;System.ReallocMem;System.ReallocMemo ...
- WCF 客户端调用服务操作的两种方法
本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...
随机推荐
- [Linux]Service mysql start出错(mysql: unrecognized service)解决方法
service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [hitony ~]# service mysql star ...
- printf--动态指定输出格式长度
char a1[] = {'A', 'B', 'C'}; char a2[] = "world"; printf(, a1, , a2); printf("[%.*s][ ...
- Python: xml转json
1,引言 GooSeeker早在9年前就开始了Semantic Web领域的产品化,MS谋数台和DS打数机是其中两个产品.对web内容做结构化转换和语义处理的主要路线是 XML -> RDF - ...
- 会场安排问题--nyoj题目14
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...
- ip聚合(百度之星资格赛1003)
IP聚合 点击这里 Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下, ...
- XML的Schema约束
XSD文档至少要包含:schema根元素和XML模式命名空间的定义.元素定义.需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命 ...
- 浅谈 qmake 之 shadow build(就是将源码路径和构建路径分开)
shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake ...
- QT:给Widget设置背景图片——设置Widget的调色板,调色板使用图片和背景色
QT:给Widget设置背景图片 1 /*2 * set background image3 */4 QPixmap bgImages(":/images/bg.png");5 Q ...
- c# 正则表达式对网页进行内容抓取
原文 c# 正则表达式对网页进行内容抓取 搜索引擎中一个比较重要的环节就是从网页中抽取出有效内容.简单来说,就是吧HTML文本中的HTML标记去掉,留下我们用IE等浏览器打开HTML文档看到的部分(我 ...
- thinkPHP模板引擎案例
1.if <if condition="$vo.business eq LS"> 零售 <elseif condition="$vo.business ...