Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/01/2010, 05:25
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 4 meses
Puntos: 29
Respuesta: Funciones para trabajar con servicios en vbs

Aqui te dejo una función que he creado para tí (y para mi... bueeeno, para todos).
Como es mi costumbre, lo habré hecho del modo más rebuscado, pero es el único que he encontrado:

Código vb:
Ver original
  1. Private Function RevisaServicio(NombreServicio As String, Optional Asegurar_0off_1on As Integer = -1) As String
  2.   Dim TempDir As String
  3.   Dim FileTemp As String
  4.   Dim NumFichero As Integer
  5.   Dim Linea As String
  6.   Dim LineaBAK As String
  7.   Dim Encontrado As Integer
  8.   TempDir = Environ("temp")
  9.   If Right$(TempDir, 1) <> "\" Then TempDir = TempDir & "\"
  10.   FileTemp = TempDir & "servicios.txt"
  11.   Shell "cmd /c sc query state= all > " & FileTemp, vbHide
  12.   DoEvents
  13.   NumFichero = FreeFile
  14. ResumeAbrir:
  15.   On Local Error GoTo ErrorAbrir
  16.   Open FileTemp For Input As #NumFichero
  17.   Do Until EOF(NumFichero)
  18.     Line Input #NumFichero, Linea
  19.     If Trim$(Mid$(UCase$(Linea), 14)) = UCase$(NombreServicio) Then
  20.       Line Input #NumFichero, Linea
  21.       Line Input #NumFichero, Linea
  22.       Encontrado = 1
  23.       Exit Do
  24.     End If
  25.     LineaBAK = Linea
  26.   Loop
  27.   Close NumFichero
  28.   Kill FileTemp
  29.   If Encontrado = 0 Then
  30.     RevisaServicio = "El servicio no existe"
  31.     Exit Function
  32.   End If
  33.   If Asegurar_0off_1on = 1 Then
  34.     If InStr(1, Linea, "STOPPED") Then
  35.       RevisaServicio = "El servicio se ha re-activado"
  36.       Shell "sc start " & Mid$(LineaBAK, 14)
  37.     Else
  38.       RevisaServicio = "El servicio estaba activo"
  39.     End If
  40.   ElseIf Asegurar_0off_1on = 0 Then
  41.     If InStr(1, Linea, "RUNNING") Then
  42.       RevisaServicio = "El servicio se ha detenido"
  43.       Shell "sc stop " & Mid$(LineaBAK, 14)
  44.     Else
  45.       RevisaServicio = "El servicio estaba detenido"
  46.     End If
  47.   Else
  48.     If InStr(1, Linea, "RUNNING") Then
  49.       RevisaServicio = "El servicio está activo"
  50.     Else
  51.       RevisaServicio = "El servicio está detenido"
  52.     End If
  53.   End If
  54.  
  55. Exit Function
  56.  
  57. ErrorAbrir:
  58.   If Err.Number = 53 Or Err.Number = 70 Then
  59.     Err.Clear
  60.     DoEvents
  61.     Resume ResumeAbrir
  62.   Else
  63.     MsgBox Err.Description
  64.   End If
  65. End Function
Esta función comprueba el estado de un servicio (al menos en XP) y muestra si está activo o no.

Tambien puedes forzarlo a que se active si no lo está o que se desactive si está activo.

Ejm:

Mostrar estado:
MsgBox RevisaServicio("Servicio de Estado ASP.NET")

Asegurar activo
MsgBox RevisaServicio("Servicio de Estado ASP.NET", 1)
o
RevisaServicio "Servicio de Estado ASP.NET", 1

Asegurar detenido
MsgBox RevisaServicio("Servicio de Estado ASP.NET", 0)
o
RevisaServicio "Servicio de Estado ASP.NET", 0
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 18/01/2010 a las 05:32 Razón: Mejorar