Windows服务管理类


头文件
Code

CPP实现文件:

Code

使用示例:

...
#include "MyServiceStatus.h"
class CNTServCtrlDlg : public CDialog
{
...
private:
CMyServiceStatus m_MyServiceStatus;

}

////////////////////////////////////////////////////////////
CNTServCtrlDlg::CNTServCtrlDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNTServCtrlDlg::IDD, pParent),m_MyServiceStatus("FileSync")
{
//{{AFX_DATA_INIT(CNTServCtrlDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_uiTimer = 0;
}

BOOL CNTServCtrlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CenterWindow();

m_MyServiceStatus.Run();//启动查询状态线程
return TRUE; // return TRUE unless you set the focus to a control
}

void CNTServCtrlDlg::OnTimer(UINT nIDEvent)
{
// Update the status
ShowState();
}

void CNTServCtrlDlg::ShowState()
{

DWORD dwState = 0xFFFFFFFF;

char buf[64];
dwState = m_MyServiceStatus.m_dwServiceStatus;
switch (dwState) {
case SERVICE_STOPPED:
strcpy(buf, "Stopped");
break;
case SERVICE_START_PENDING:
strcpy(buf, "Start pending");
break;
case SERVICE_STOP_PENDING:
strcpy(buf, "Stop pending");
break;
case SERVICE_RUNNING:
strcpy(buf, "Running");
break;
case SERVICE_CONTINUE_PENDING:
strcpy(buf, "Continue pending");
break;
case SERVICE_PAUSE_PENDING:
strcpy(buf, "Pause pending");
break;
case SERVICE_PAUSED:
strcpy(buf, "Paused");
break;
default:
if(!m_MyServiceStatus.IsServiceInstalled())
strcpy(buf,"Service Not Installed");
else
strcpy(buf, "<Unknown>");
break;
}
SetDlgItemText(IDC_STATE, buf);
}

void CNTServCtrlDlg::OnDestroy()
{
m_MyServiceStatus.Stop();//结束CMyServiceStatus中的查询状态线程
CDialog::OnDestroy();

if (m_uiTimer != 0) {
KillTimer(1);
}
}

优质内容筛选与推荐>>
1、leetcode598
2、Oracle 执行长SQL
3、mysql5.7.24免安装版配置及密码初始化及mysql-font连接异常
4、J2SE知识点摘记(十五)
5、HDOJ-2036


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn