就是我有个mail收发程序,要求在windows,linux,unix上都能作为系统服务使用。就是说在用户登陆之前就在运行了,怎么做啊 要实现这个,就目前的 Java 来说,基本上是"很难". 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在windowns上可以通过设置run键值来实现 只能开发成系统服务,我这而有段代码:using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp 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="load"; //线程名字 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,"\\LoadUpdateService.exe"); scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); if(scm!=NULL) svc=CreateService(scm,"load","load",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,"load",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("load",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) {} 用InetAddress获取IP无法使用 java中hashmap问题 怎么用CVS得到已经改过的文件列表? 关于jquery中的ajaxSubmit问题,请各位大侠帮忙看一下 相当重要的问题 高手在哪儿呢? 请进 到底有没有人用SCALA开发产品啊 请问该如何显示一个网页,谢谢 我写了一个java程序,但希望他在早上5:00启动,晚上12:00关闭,如何自动实现? 如今java的用途主要在哪些方面,能否介绍一下? java swing组件使用过程中出现这样的问题怎么办啊 为什么我用flowlayout的时候,用setMinimumSize无效? 谁的方法好
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp 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="load"; //线程名字
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,"\\LoadUpdateService.exe");
scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(scm!=NULL)
svc=CreateService(scm,"load","load",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,"load",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("load",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)
{
}