服务相关编程
来源:互联网 发布:原始网卡mac地址 编辑:程序博客网 时间:2024/06/05 18:07
枚举服务:
void CServerManageDlg::ShowServiceList(DWORD dwServiceType){ m_ServiceList.DeleteAllItems(); SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(NULL == hSCM) { AfxMessageBox("OpenSCManager Error"); return; } DWORD dwBufSize = 512 * sizeof(ENUM_SERVICE_STATUS); DWORD dwByteNeeded, dwServiceReturned, lpResumeHandle = 0; ENUM_SERVICE_STATUS SerStatus[512] = {0}; BOOL bRet = EnumServicesStatus(hSCM, dwServiceType, SERVICE_STATE_ALL, SerStatus, dwBufSize, &dwByteNeeded, &dwServiceReturned, &lpResumeHandle); for(DWORD i=0; i<dwServiceReturned; 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 CServerManageDlg::OnButtonStart() { // TODO: Add your control notification handler code here //选中服务的索引 POSITION pos = m_ServiceList.GetFirstSelectedItemPosition(); int nSelected = -1; while(pos) { nSelected = m_ServiceList.GetNextSelectedItem(pos); } if(-1 == nSelected) { AfxMessageBox("请选择要启动的服务!"); } //获取选中的服务的服务名 char szServiceName[MAXBYTE] = {0}; m_ServiceList.GetItemText(nSelected, 1, szServiceName, MAXBYTE); SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(NULL == hSCM) { AfxMessageBox("OpenSCManager Error"); return; } SC_HANDLE hSCService = OpenService(hSCM, szServiceName, SERVICE_ALL_ACCESS); //启动服务 BOOL bRet = StartService(hSCService, 0, NULL); if(bRet == TRUE) m_ServiceList.SetItemText(nSelected, 3, "运行"); else int n = GetLastError(); CloseServiceHandle(hSCService); CloseServiceHandle(hSCM);}
停止服务:
void CServerManageDlg::OnButtonStop() { // TODO: Add your control notification handler code here //选中服务的索引 POSITION pos = m_ServiceList.GetFirstSelectedItemPosition(); int nSelected = -1; while(pos) { nSelected = m_ServiceList.GetNextSelectedItem(pos); } if(-1 == nSelected) { AfxMessageBox("请选择要停止的服务!"); } //获取选中的服务的服务名 char szServiceName[MAXBYTE] = {0}; m_ServiceList.GetItemText(nSelected, 1, szServiceName, MAXBYTE); SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(NULL == hSCM) { AfxMessageBox("OpenSCManager Error"); return; } SC_HANDLE hSCService = OpenService(hSCM, szServiceName, SERVICE_ALL_ACCESS); SERVICE_STATUS ServiceStatus; //停止服务 BOOL bRet = ControlService(hSCService, SERVICE_CONTROL_STOP, &ServiceStatus); if(bRet == TRUE) m_ServiceList.SetItemText(nSelected, 3, "停止"); else int n = GetLastError(); CloseServiceHandle(hSCService); CloseServiceHandle(hSCM);}
初始化:
void CServerManageDlg::InitServiceList(){ m_ServiceList.SetExtendedStyle(m_ServiceList.GetExtendedStyle() | LVS_EX_GRIDLINES //有网络格 | LVS_EX_FULLROWSELECT); //选择单行 m_ServiceList.ModifyStyle(0, LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); m_ServiceList.InsertColumn(0, _T("序号")); m_ServiceList.InsertColumn(1, _T("服务名")); m_ServiceList.InsertColumn(2, _T("显示名")); m_ServiceList.InsertColumn(3, _T("状态")); 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);}
OnInitDialog:
InitServiceList(); m_win32Ctr.SetCheck(TRUE); ShowServiceList(SERVICE_WIN32);
RadioButton:
void CServerManageDlg::OnRadio1() { // TODO: Add your control notification handler code here UpdateData(TRUE); ShowServiceList(SERVICE_WIN32);}void CServerManageDlg::OnRadio2() { // TODO: Add your control notification handler code here UpdateData(TRUE); ShowServiceList(SERVICE_DRIVER);}
0 0
- 服务相关编程
- 编程相关
- 编程 相关
- AIX 服务相关命令
- SAP相关服务【兼职】
- WTC服务相关
- web 服务相关
- CentOS 相关服务
- Oracle相关服务详解
- IIS相关服务
- Oracle相关的服务
- vsftpd服务相关
- Web服务相关论文
- android服务相关概念
- 搜索相关服务
- DNS服务相关概念
- libevent 搭建服务相关
- ssh服务相关问题
- Flex 布局教程:实例篇(转载自阮一峰博客)
- ubuntu server平台下安装与配置MYSQL的ODBC驱动
- 真正的云主机到底是什么样的?
- 响应者链条
- Android黑科技,读取用户短信+修改系统短信数据库
- 服务相关编程
- 数学形态学及图像压缩
- Struts2中json的使用
- 王海桑《爷爷是个老头》
- 实数的输出格式(C++程序设计第7周)
- 内存不足
- online_judge_1147
- DS-SDUT-数据结构实验之排序二:交换排序
- CFileDialog打开文件