要实现这个,就目前的 Java 来说,基本上是"很难".

解决方案 »

  1.   

    在windowns上可以通过设置run键值来实现
      

  2.   

    只能开发成系统服务,我这而有段代码:
    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)  
    {
    }