散分,随便贡献一段代码“通过程序关闭和启动服务”

kuangning 2002-12-13 03:26:29
Uses WinSvc
procedure RunService(ServiceName : String); //启动服务
procedure TASESWatch2002.RunService(ServiceName: String);
var
svcmgr,svc : Integer ;
temp : _SERVICE_STATUS;
s : Pchar ;

begin
svcmgr :=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if svcmgr = 0 then
exit ;
svc :=OpenService(svcmgr,pchar(ServiceName),SERVICE_ALL_ACCESS);
if svc = 0 then
begin
CloseServiceHandle(svcmgr);
exit ;
end ;
QueryServiceStatus(svc,temp);
if temp.dwCurrentState = SERVICE_STOPPED then
begin
if StartService(svc,0,s) then
//服务:"'+ServiceName+'"启动成功' else
//服务:"'+ServiceName+'"启动失败';
end ;// ControlService(svc,SERVICE_CONTROL_STOP,temp);关闭服务
CloseServiceHandle(svcmgr);
CloseServiceHandle(svc);
end;
...全文
40 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsea 2002-12-16
  • 打赏
  • 举报
回复
up
kuangning 2002-12-16
  • 打赏
  • 举报
回复
laihecongxi(兴哥) ( )
QueryServiceStatus(svc,temp);
if temp.dwCurrentState = SERVICE_STOPPED then
这局就是参看服务当前状态的

zwhhoo(我爱真理)
土办法:winexec(pchar(服务程序 /install),sw_hide);
要用Api就看看OpenSCManager的相观帮助
或者看看WinSvc单元

SilveryFox(一天一点爱恋......) :
dll是被其他程序说调用,我也不知道怎么关闭:(
SilveryFox 2002-12-13
  • 打赏
  • 举报
回复
接分
另:如何关闭一个占用的dll
linzhisong 2002-12-13
  • 打赏
  • 举报
回复
get
东方小黑 2002-12-13
  • 打赏
  • 举报
回复
学习
goodloop 2002-12-13
  • 打赏
  • 举报
回复
收藏~
flyingkiller 2002-12-13
  • 打赏
  • 举报
回复
收藏
yixia 2002-12-13
  • 打赏
  • 举报
回复
看李伟的3层结构应用
上面有个例子
laihecongxi 2002-12-13
  • 打赏
  • 举报
回复
接分。
{顺路:我想知道我得到服务的启动状态怎么弄?thanks}
zwhhoo 2002-12-13
  • 打赏
  • 举报
回复
谢谢楼主的东东。随便问一下怎么把自已的程序注册为一个服务?
kuangning 2002-12-13
  • 打赏
  • 举报
回复
当然用
WinExec('net stop 服务名',SW_HIDE);
WinExec('net start 服务名',SW_HIDE);
也可以,不过比较土,:)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧