Requirements Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0 SP4 and later. Server: Included in Windows Server 2003, Windows 2000 Server, Windows NT Server 4.0 SP4 and later.
clear listServices() SendCommandToService('Schedule', 'PauseService()') SendCommandToService('Schedule', 'ResumeService()') SendCommandToService('Schedule', 'StopService()') SendCommandToService('Schedule', 'StartService()') function listServices(tcComputer) local lcComputer, loWMIService, loOperatingSystem, loOS, lcDateTime, ltDateTime, lnRet lcComputer = Iif(Vartype(tcComputer)='C', tcComputer, 'LocalHost') loWMIService = GetObject("winmgmts:\\" + lcComputer + "\root\cimv2") loServices = loWMIService.ExecQuery("Select * from Win32_Service") try lnCount = loServices.Count catch lnCount = 0 endtry if lnCount > 0 for each loService in loServices with loService ? .Name, .Caption, .PathName, .State, .StartMode endwith endfor endif return * To stop, start, pause or resume a service, for example function SendCommandToService(tcService, tcCommand, tcComputer) local lcComputer, loWMIService, loOperatingSystem, loOS, lcDateTime, ltDateTime, lnRet lcComputer = Iif(Vartype(tcComputer)='C', tcComputer, 'LocalHost') loWMIService = GetObject("winmgmts:\\" + lcComputer + "\root\cimv2") loServices = loWMIService.ExecQuery("Select * from Win32_Service") loServices = loWMIService.ExecQuery("Select * from Win32_Service where name='" + tcService + "'") try lnCount = loServices.Count catch lnCount = 0 endtry if lnCount > 0 for each loService in loServices lnRet = Evaluate('loService.' + tcCommand) if lnRet = 0 ? 'Successfully executed command: ' + tcCommand + ' to ' + tcService + ' service' else ? 'Fail to execute command: ' + tcCommand + ' to ' + tcService + ' service, Error:', lnRet endif endfor else ? 'Service not found' endifOtra cosa, en general yo escribo el código con nombre de computadora remota, ya que al ser administrador de dominio puedo ejecutarlo sin problema, pero, esto no es la norma, así que si sólo vas a correr esto en la máquina local, puedes remover el parámetro tcComputer y usar '.' ó 'localhost' en su defecto, hay otros cambios que pueden ser necesarios si corres VFP6 o si usas Windows NT (creo para NT hay que pasar el valor de "impersonation", en XP así como lo uso toma el default "impersonate", pero si quieres usarlo con NT (2000?) y no te funciona, dime y te paso la sintaxis
loLocator = createObject("wbemScripting.SwbemLocator") loWMIService = loLocator.ConnectServer(lcComputer) && '' o nada para computadora localen lugar de:
loWMIService = GetObject("winmgmts:\\" + lcComputer + "\root\cimv2")< Update >