//显示服务
void CManageServiceDlg::OnBtnStart()
{
// TODO: Add your control notification handler code here
POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
int nSelect = -1;
while( pos )
{
nSelect = m_ServiceList.GetNextSelectedItem(pos);
}
if(-1 == nSelect)
{
MessageBox("请选择要操作的项");
return ;
}
//获取选中服务的服务名
char szServiceName[MAXBYTE] = {0};
m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if( NULL == hSCM)
{
MessageBox("OpenSCManager Error");
return;
}
SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
//启动服务
int bRet = StartService(hSCService,0,NULL);
if(bRet)
m_ServiceList.SetItemText(nSelect,3,"运行");
else
int n = GetLastError();
CloseServiceHandle(hSCService);
CloseServiceHandle(hSCM);
}
void CManageServiceDlg::ShowServiceList(DWORD dwServiceType)
{
m_ServiceList.DeleteAllItems();
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if( NULL == hSCM)
{
MessageBox("OpenSCManager Error!");
return ;
}
DWORD dwBufSize = 512 * sizeof(ENUM_SERVICE_STATUS);
DWORD dwByteNeeded,dwServicesReturned,lpResumeHandle = 0;
ENUM_SERVICE_STATUS SerStatus[512] = {0};
int bRet = EnumServicesStatus(hSCM,
dwServiceType,
SERVICE_STATE_ALL,
SerStatus,
dwBufSize,
&dwByteNeeded,
&dwServicesReturned,
&lpResumeHandle);
if( FALSE == bRet)
{
MessageBox("EnumServiceStatus Error");
CloseServiceHandle(hSCM);
return;
}
for( DWORD i = 0; i < dwServicesReturned ; i ++)
{
CString str;
str.Format("%d",i);
m_ServiceList.InsertItem(i,str);
m_ServiceList.SetItemText(i,1,SerStatus[i].lpServiceName);
m_ServiceList.SetItemText(i,2,SerStatus[i].lpDisplayName);
switch(SerStatus[i].ServiceStatus.dwCurrentState)
{
case SERVICE_PAUSED:
m_ServiceList.SetItemText(i,3,"暂停");
break;
case SERVICE_STOPPED:
m_ServiceList.SetItemText(i,3,"停止");
break;
case SERVICE_RUNNING:
m_ServiceList.SetItemText(i,3,"运行");
break;
default:
m_ServiceList.SetItemText(i,3,"其他");
}
}
CloseServiceHandle(hSCM);
}
{
m_ServiceList.DeleteAllItems();
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if( NULL == hSCM)
{
MessageBox("OpenSCManager Error!");
return ;
}
DWORD dwBufSize = 512 * sizeof(ENUM_SERVICE_STATUS);
DWORD dwByteNeeded,dwServicesReturned,lpResumeHandle = 0;
ENUM_SERVICE_STATUS SerStatus[512] = {0};
int bRet = EnumServicesStatus(hSCM,
dwServiceType,
SERVICE_STATE_ALL,
SerStatus,
dwBufSize,
&dwByteNeeded,
&dwServicesReturned,
&lpResumeHandle);
if( FALSE == bRet)
{
MessageBox("EnumServiceStatus Error");
CloseServiceHandle(hSCM);
return;
}
for( DWORD i = 0; i < dwServicesReturned ; i ++)
{
CString str;
str.Format("%d",i);
m_ServiceList.InsertItem(i,str);
m_ServiceList.SetItemText(i,1,SerStatus[i].lpServiceName);
m_ServiceList.SetItemText(i,2,SerStatus[i].lpDisplayName);
switch(SerStatus[i].ServiceStatus.dwCurrentState)
{
case SERVICE_PAUSED:
m_ServiceList.SetItemText(i,3,"暂停");
break;
case SERVICE_STOPPED:
m_ServiceList.SetItemText(i,3,"停止");
break;
case SERVICE_RUNNING:
m_ServiceList.SetItemText(i,3,"运行");
break;
default:
m_ServiceList.SetItemText(i,3,"其他");
}
}
CloseServiceHandle(hSCM);
}
void CManageServiceDlg::OnBtnStart()
{
// TODO: Add your control notification handler code here
POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
int nSelect = -1;
while( pos )
{
nSelect = m_ServiceList.GetNextSelectedItem(pos);
}
if(-1 == nSelect)
{
MessageBox("请选择要操作的项");
return ;
}
//获取选中服务的服务名
char szServiceName[MAXBYTE] = {0};
m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if( NULL == hSCM)
{
MessageBox("OpenSCManager Error");
return;
}
SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
//启动服务
int bRet = StartService(hSCService,0,NULL);
if(bRet)
m_ServiceList.SetItemText(nSelect,3,"运行");
else
int n = GetLastError();
CloseServiceHandle(hSCService);
CloseServiceHandle(hSCM);
}
void CManageServiceDlg::OnBtnStop()
{
// TODO: Add your control notification handler code here
//获取选中的行
POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
int nSelect = -1;
while( pos )
{
nSelect = m_ServiceList.GetNextSelectedItem(pos);
}
if(-1 == nSelect)
{
MessageBox("请选择要操作的项");
return ;
}
//获取选中服务的服务名
char szServiceName[MAXBYTE] = {0};
m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(NULL == hSCM)
{
MessageBox("OpenSCManager Erroe");
return ;
}
SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
SERVICE_STATUS ServiceStatus;
//停止服务
int bRet = ControlService(hSCService,SERVICE_CONTROL_STOP,&ServiceStatus);
if( bRet )
{
m_ServiceList.SetItemText(nSelect,3,"停止");
}else
{
int n = GetLastError();
}
CloseServiceHandle(hSCService);
CloseServiceHandle(hSCM);
}
{
// TODO: Add your control notification handler code here
//获取选中的行
POSITION pos = m_ServiceList.GetFirstSelectedItemPosition();
int nSelect = -1;
while( pos )
{
nSelect = m_ServiceList.GetNextSelectedItem(pos);
}
if(-1 == nSelect)
{
MessageBox("请选择要操作的项");
return ;
}
//获取选中服务的服务名
char szServiceName[MAXBYTE] = {0};
m_ServiceList.GetItemText(nSelect,1,szServiceName,MAXBYTE);
SC_HANDLE hSCM = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(NULL == hSCM)
{
MessageBox("OpenSCManager Erroe");
return ;
}
SC_HANDLE hSCService = OpenService(hSCM,szServiceName,SERVICE_ALL_ACCESS);
SERVICE_STATUS ServiceStatus;
//停止服务
int bRet = ControlService(hSCService,SERVICE_CONTROL_STOP,&ServiceStatus);
if( bRet )
{
m_ServiceList.SetItemText(nSelect,3,"停止");
}else
{
int n = GetLastError();
}
CloseServiceHandle(hSCService);
CloseServiceHandle(hSCM);
}
void CManageServiceDlg::OnInitServerList()
{
m_ServiceList.SetExtendedStyle(
m_ServiceList.GetExtendedStyle()
| LVS_EX_GRIDLINES
| LVS_EX_FULLROWSELECT);
m_ServiceList.InsertColumn(0,"序号",LVCFMT_LEFT);
m_ServiceList.InsertColumn(1,"服务名",LVCFMT_LEFT);
m_ServiceList.InsertColumn(2,"显示名",LVCFMT_LEFT);
m_ServiceList.InsertColumn(3,"状态",LVCFMT_LEFT);
m_ServiceList.SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(2,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(3,LVSCW_AUTOSIZE_USEHEADER);
}
{
m_ServiceList.SetExtendedStyle(
m_ServiceList.GetExtendedStyle()
| LVS_EX_GRIDLINES
| LVS_EX_FULLROWSELECT);
m_ServiceList.InsertColumn(0,"序号",LVCFMT_LEFT);
m_ServiceList.InsertColumn(1,"服务名",LVCFMT_LEFT);
m_ServiceList.InsertColumn(2,"显示名",LVCFMT_LEFT);
m_ServiceList.InsertColumn(3,"状态",LVCFMT_LEFT);
m_ServiceList.SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(2,LVSCW_AUTOSIZE_USEHEADER);
m_ServiceList.SetColumnWidth(3,LVSCW_AUTOSIZE_USEHEADER);
}