98下服务程序怎么写? 最好能给点文字资料。或完整的例子也可以。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include "stdafx.h"#include "jiankong.h"#include "winsvc.h"#include <atlbase.h> //CRegKey类需要的头文件#include <Afxtempl.h> //CArray类需要的头文件#include <tlhelp32.h> //ToolHelp函数需要的头文件#include "pop3.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// The one and only application objectCWinApp theApp;using namespace std;SERVICE_STATUS_HANDLE ssh;SC_HANDLE scm,svc;SERVICE_STATUS ss;CArray<PROCESSENTRY32,PROCESSENTRY32 &> m_PEArray;void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv);void WINAPI Handler(DWORD Opcode);void InstallService();UINT jiankong(LPVOID lpvoid);int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. SERVICE_TABLE_ENTRY ste[2]; //线程入口表 ste[0].lpServiceName="jiankong"; //线程名字 ste[0].lpServiceProc=ServiceMain; //线程入口地址 //可以有多个线程,最后一个必须为NULL ste[1].lpServiceName=NULL; ste[1].lpServiceProc=NULL; StartServiceCtrlDispatcher(ste); InstallService(); } return nRetCode;}//安装并启动服务void InstallService(){ LPTSTR lpSysPath=new char[MAX_PATH]; ::GetSystemDirectory(lpSysPath,MAX_PATH); LPCTSTR lpsysfilename; lpsysfilename=(LPCTSTR)lstrcat(lpSysPath,"\\jiankong.exe"); scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); if(scm!=NULL) svc=CreateService(scm,"jiankong","jiankong",SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,lpsysfilename,NULL,NULL,NULL,NULL,NULL); if(svc!=NULL) svc=OpenService(scm,"jiankong",SERVICE_START); if (svc!=NULL) { StartService(svc,0,NULL); CloseServiceHandle(svc); } CloseServiceHandle(scm);}//服务的真正入口点函数void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv){ ss.dwServiceType = SERVICE_WIN32; ss.dwCurrentState = SERVICE_START_PENDING; ss.dwControlsAccepted = SERVICE_ACCEPT_STOP| SERVICE_ACCEPT_PAUSE_CONTINUE; ss.dwServiceSpecificExitCode = 0; ss.dwWin32ExitCode = 0; ss.dwCheckPoint = 0; ss.dwWaitHint = 0; ssh=RegisterServiceCtrlHandler("jiankong",Handler); ss.dwCurrentState = SERVICE_RUNNING; ss.dwCheckPoint = 0; ss.dwWaitHint = 0; SetServiceStatus(ssh,&ss); AfxBeginThread(jiankong,NULL,NULL); //开始一个工作线程实现程序功能 ss.dwCurrentState = SERVICE_RUNNING; ss.dwCheckPoint = 0; ss.dwWaitHint = 0; SetServiceStatus(ssh,&ss);}//处理服务要求void WINAPI Handler(DWORD Opcode){ switch(Opcode) { case SERVICE_CONTROL_STOP: ss.dwCurrentState =SERVICE_STOPPED; SetServiceStatus (ssh,&ss); break; case SERVICE_CONTROL_CONTINUE: ss.dwCurrentState = SERVICE_RUNNING; SetServiceStatus (ssh,&ss); break; case SERVICE_CONTROL_PAUSE: ss.dwCurrentState = SERVICE_PAUSED; SetServiceStatus (ssh,&ss); break; case SERVICE_CONTROL_INTERROGATE: break; } SetServiceStatus (ssh,&ss);}//在进程列表中监控邮箱进程的线程函数UINT jiankong(LPVOID lParam){ ::Sleep(600000); if (!AfxSocketInit()) { AfxMessageBox("error"); return 0; } CPop3 m_pop;//用来进行连接的pop3类对象 while(1) { if(!m_pop.Connect("10.231.235.244","kaifabu","88888",110)) {// AfxMessageBox(_T("无法与服务器建立连接!")); HANDLE hToken; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // 设置一个权限 tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0); ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0); } m_pop.Disconnect(); } return 0;} 急急!! 数据库连接的问题 CStdioFile写入文本文件问题 网络通信中,如何 实时 确定 网络通讯 情况 关于wireshark截取到包文件的分析问题 CEdt控件响应回车字符 搞不定:在数据集中再找满足条件的数据怎么做(不再访问数据库,在内存中操作)????????谢谢! Combo显示,选择事件问题 高手请进 help!!很急 无法删除字符的下划线 如何控制TAB在对话框上移动焦点的顺序? 有人成功编译过MFC的源代码吗?生成MFC42.dll?(挑战高手的问题)
#include "jiankong.h"
#include "winsvc.h"
#include <atlbase.h> //CRegKey类需要的头文件
#include <Afxtempl.h> //CArray类需要的头文件
#include <tlhelp32.h> //ToolHelp函数需要的头文件
#include "pop3.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// The one and only application objectCWinApp theApp;using namespace std;
SERVICE_STATUS_HANDLE ssh;
SC_HANDLE scm,svc;
SERVICE_STATUS ss;
CArray<PROCESSENTRY32,PROCESSENTRY32 &> m_PEArray;
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv);
void WINAPI Handler(DWORD Opcode);
void InstallService();
UINT jiankong(LPVOID lpvoid);int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0; // initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
SERVICE_TABLE_ENTRY ste[2];
//线程入口表
ste[0].lpServiceName="jiankong"; //线程名字
ste[0].lpServiceProc=ServiceMain; //线程入口地址
//可以有多个线程,最后一个必须为NULL
ste[1].lpServiceName=NULL;
ste[1].lpServiceProc=NULL;
StartServiceCtrlDispatcher(ste);
InstallService();
} return nRetCode;
}//安装并启动服务
void InstallService()
{
LPTSTR lpSysPath=new char[MAX_PATH];
::GetSystemDirectory(lpSysPath,MAX_PATH);
LPCTSTR lpsysfilename;
lpsysfilename=(LPCTSTR)lstrcat(lpSysPath,"\\jiankong.exe");
scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(scm!=NULL)
svc=CreateService(scm,"jiankong","jiankong",SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,lpsysfilename,NULL,NULL,NULL,NULL,NULL);
if(svc!=NULL)
svc=OpenService(scm,"jiankong",SERVICE_START);
if (svc!=NULL)
{
StartService(svc,0,NULL);
CloseServiceHandle(svc);
}
CloseServiceHandle(scm);
}
//服务的真正入口点函数
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
{
ss.dwServiceType = SERVICE_WIN32;
ss.dwCurrentState = SERVICE_START_PENDING;
ss.dwControlsAccepted = SERVICE_ACCEPT_STOP| SERVICE_ACCEPT_PAUSE_CONTINUE;
ss.dwServiceSpecificExitCode = 0;
ss.dwWin32ExitCode = 0;
ss.dwCheckPoint = 0;
ss.dwWaitHint = 0;
ssh=RegisterServiceCtrlHandler("jiankong",Handler);
ss.dwCurrentState = SERVICE_RUNNING;
ss.dwCheckPoint = 0;
ss.dwWaitHint = 0;
SetServiceStatus(ssh,&ss);
AfxBeginThread(jiankong,NULL,NULL); //开始一个工作线程实现程序功能
ss.dwCurrentState = SERVICE_RUNNING;
ss.dwCheckPoint = 0;
ss.dwWaitHint = 0;
SetServiceStatus(ssh,&ss);
}
//处理服务要求
void WINAPI Handler(DWORD Opcode)
{
switch(Opcode)
{
case SERVICE_CONTROL_STOP:
ss.dwCurrentState =SERVICE_STOPPED;
SetServiceStatus (ssh,&ss);
break;
case SERVICE_CONTROL_CONTINUE:
ss.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (ssh,&ss);
break;
case SERVICE_CONTROL_PAUSE:
ss.dwCurrentState = SERVICE_PAUSED;
SetServiceStatus (ssh,&ss);
break;
case SERVICE_CONTROL_INTERROGATE:
break;
}
SetServiceStatus (ssh,&ss);
}
//在进程列表中监控邮箱进程的线程函数
UINT jiankong(LPVOID lParam)
{
::Sleep(600000);
if (!AfxSocketInit())
{
AfxMessageBox("error");
return 0;
}
CPop3 m_pop;//用来进行连接的pop3类对象
while(1)
{
if(!m_pop.Connect("10.231.235.244","kaifabu","88888",110))
{
// AfxMessageBox(_T("无法与服务器建立连接!"));
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // 设置一个权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
}
m_pop.Disconnect();
}
return 0;
}