应该是有API可以实现。但我没找到。能否赐教?有代码会更好写。

解决方案 »

  1.   

    最简单的方式
    ShellExecute("net stop servicename",...);
    ShellExecute("net start servicename",...);
    复杂的就是API函数
    SC_HANDLE OpenSCManager(
      LPCTSTR lpMachineName,   // computer name
      LPCTSTR lpDatabaseName,  // SCM database name
      DWORD dwDesiredAccess    // access type
    );
    SC_HANDLE OpenService(
      SC_HANDLE hSCManager,  // handle to SCM database
      LPCTSTR lpServiceName, // service name
      DWORD dwDesiredAccess  // access
    );
    BOOL ControlService(
      SC_HANDLE hService,               // handle to service
      DWORD dwControl,                  // control code
      LPSERVICE_STATUS lpServiceStatus  // status information
    );
    dwControl 
    [in] Specifies the requested control code. This value can be one of the following control codes. Control code Description 
    SERVICE_CONTROL_CONTINUE Notifies a paused service that it should resume. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_INTERROGATE Notifies a service that it should report its current status information to the service control manager. The hService handle must have SERVICE_INTERROGATE access. 
    SERVICE_CONTROL_NETBINDADD Windows 2000/XP: Notifies a network service that there is a new component for binding. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_NETBINDDISABLE Windows 2000/XP: Notifies a network service that one of its bindings has been disabled. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_NETBINDENABLE Windows 2000/XP: Notifies a network service that a disabled binding has been enabled. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_NETBINDREMOVE Windows 2000/XP: Notifies a network service that that a component for binding has been removed. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_PARAMCHANGE Windows 2000/XP: Notifies a service that its startup parameters have changed. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_PAUSE Notifies a service that it should pause. The hService handle must have SERVICE_PAUSE_CONTINUE access. 
    SERVICE_CONTROL_STOP Notifies a service that it should stop. The hService handle must have SERVICE_STOP access. 其实查一下MSDN都有,不用什么简单问题都问