📄 zztg.cpp
字号:
// zztg.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "zztg.h"
#include "zztgDlg.h"
#include "zzxs_Thread.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CzztgApp
BEGIN_MESSAGE_MAP(CzztgApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CzztgApp 构造
CzztgApp::CzztgApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CzztgApp 对象
CzztgApp theApp;
// CzztgApp 初始化
BOOL CzztgApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
CNTServiceParam param;//建立NTService类对象事例;
param.Parse();
CString strServiceName="ZZxsSMS";
if(!param.HadParam()){
CzzxsServices service;
int iCode = CNTService::Run(&service,strServiceName);
if(iCode!=ERROR_OK){
AfxMessageBox("运行失败\n");
}
}
else{
CString strParam = param.GetAt(0);
strParam.MakeLower();
if(strParam=="install"){
TCHAR path[MAX_PATH];
::GetModuleFileName(NULL,path,MAX_PATH);
SERV_INFO info;
ZeroMemory(&info,sizeof(info));
info.enStartType = Manual;
strcat(info.tcServiceDesc,"自写短信服务程序");
strcat(info.tcServiceDisplayName,"自写短信服务程序");
strcat(info.tcServicePath,path);
int iCode = ::ServiceInstall(strServiceName,info);
CString strMsg;
if(iCode!=ERROR_OK)
strMsg.Format("安装失败,错误代码:%d\n",iCode);
else
strMsg.Format("安装成功,服务名称: %s\n",info.tcServiceDisplayName);
AfxMessageBox(strMsg);
}
else if(strParam=="uninstall"){
int iCode=::ServiceUninstall(strServiceName);
CString strMsg;
if(iCode!=ERROR_OK)
strMsg.Format("卸载失败,错误代码:%d\n",iCode);
else
strMsg.Format("卸载成功\n");
AfxMessageBox(strMsg);
}
else if(strParam=="startapp")
{
CzztgDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO:在此放置处理何时用“确定”来关闭
//对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO:在此放置处理何时用“取消”来关闭
//对话框的代码
}
}
else
AfxMessageBox(_T("参数错误,只支持-install,-uninstall\n"));
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
void CzzxsServices::OnStart(){
m_pThread = ::AfxBeginThread(RUNTIME_CLASS(zzxs_Thread),THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
m_pThread->ResumeThread();
}
void CzzxsServices::OnStop(){
TerminateThread(m_pThread->m_hThread,0xdead);
}
void CzzxsServices::OnPause(){
if(this->m_pThread)this->m_pThread->SuspendThread();
}
void CzzxsServices::OnContinue(){
if(this->m_pThread)this->m_pThread->ResumeThread();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -