delphi 利用CreateService写与桌面交互的win32服务  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 利用CreateService写与桌面交互的win32服务


 

功能包括 注册服务 开启服务 停止??? 不停..... 删除服务 4个功能

好的 重点在于CreateService的第5个参数设置

schd:=CreateService(mgrhd,

'TRsvc',

'TRsvc',

SERVICE_ALL_ACCESS,

SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, //interact with the desktop

SERVICE_AUTO_START,

SERVICE_ERROR_IGNORE,

szstr,

nil,

nil,

nil,

nil,

nil);

你可以去看MSDN 或者 找到Winsvc.pas即可

本来想用SYSTEM权限来结束杀毒进程...但是却为实现之 原因很多 其中就包括自己很懒 能力有限 谁愿意完成么?

或者告诉我下这个并不可行 在此谢过看客~

------------------------------------------------------------------------code-----------------------------------------------------------------------------------

uses winSVC;


var

schd:SC_HANDLE;

mgrhd:SC_HANDLE;

scs:TServiceStatus;

procedure TForm1.takeitdown1Click(Sender: TObject);

begin

ShowMessage('测试~');

end;

procedure TForm1.CS1Click(Sender: TObject);

var szstr:pchar;

begin

mgrhd:=OpenSCManager('',nil,SC_MANAGER_ALL_ACCESS);

szstr:=pchar(application.exename);

schd:=CreateService(mgrhd,

'TRsvc',

'TRsvc',

SERVICE_ALL_ACCESS,

SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, //interact with the desktop

SERVICE_AUTO_START,

SERVICE_ERROR_IGNORE,

szstr,

nil,

nil,

nil,

nil,

nil);

end;

procedure TForm1.SS1Click(Sender: TObject);

var

fxxkingchar:pchar; // just like this name

begin

fxxkingchar:=nil;

StartService(schd,0,fxxkingchar);

Application.ProcessMessages;

end;

procedure TForm1.SS2Click(Sender: TObject);

begin

ControlService(schd, SERVICE_CONTROL_STOP,scs);

end;

procedure TForm1.DS1Click(Sender: TObject);

begin

if schd = 0 then

begin

schd:=OpenService(mgrhd,'TRsvc',SC_MANAGER_ALL_ACCESS);

end;

ControlService(schd, SERVICE_CONTROL_STOP,scs);

DeleteService(schd);

CloseServiceHandle(schd);

CloseServiceHandle(mgrhd);

end;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.039034128189087 seconds