c++builder控制服务

//判断msdtc服务是否启动
if(!IsServerRunning("msdtc")){
// Application->MessageBox("未启动","提示",MB_OK);
//启动 msdtc 服务
xxStartService("msdtc");
}


/

bool __fastcall TfrmMain::xxStartService(LPCSTR ServiceName)
{
bool ret;
SC_HANDLE hService;
SC_HANDLE hManager;
SERVICE_STATUS stus;

hManager = OpenSCManager(NULL,
0, SC_MANAGER_ALL_ACCESS);
if (hManager==NULL) return false;
hService = OpenService(hManager,
ServiceName, SERVICE_ALL_ACCESS);
if (hService && QueryServiceStatus(hService,&stus)){
//如果服务在运行
if ( stus.dwCurrentState == SERVICE_STOPPED ){
//启动服务
ret = StartService(hService, NULL, NULL );
}
}
else {
ret = false;
}
if (hService != NULL)
CloseServiceHandle(hService);

CloseServiceHandle(hManager);

return ret;
}


bool __fastcall TfrmMain::xxStopService(LPCSTR ServiceName)
{
bool ret;
SC_HANDLE hService;
SC_HANDLE hManager;
SERVICE_STATUS stus;

hManager = OpenSCManager(NULL,
0, SC_MANAGER_ALL_ACCESS);
if (hManager==NULL) return false;
hService = OpenService(hManager,
ServiceName, SERVICE_ALL_ACCESS);
if (hService && QueryServiceStatus(hService,&stus)) {

//判断这个服务是否在运行
if ( stus.dwCurrentState == SERVICE_RUNNING ){

// //服务名称 关闭服务
ret = ControlService(hService,SERVICE_CONTROL_STOP,&stus);
}
}
else
ret = false;
if (hService != NULL)
CloseServiceHandle(hService);

CloseServiceHandle(hManager);

return ret;
}

//判断系统服务是否启动
bool __fastcall TfrmMain::IsServerRunning(LPCSTR ServiceName)
{
SC_HANDLE hScManage = OpenSCManager("",NULL,SC_MANAGER_ALL_ACCESS);

SERVICE_STATUS SrvStatus;

DWORD dwStat = 0;

if(hScManage > 0)
{

SC_HANDLE hSrv = OpenService(hScManage,ServiceName,SERVICE_QUERY_STATUS);

if(hSrv > 0)
{

if(QueryServiceStatus(hSrv, &SrvStatus))
dwStat = SrvStatus.dwCurrentState;

CloseServiceHandle(hSrv);
}
}
CloseServiceHandle(hScManage);
return dwStat == SERVICE_RUNNING;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值