Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Obtener el estado de un servicio de Windows - Delphi
Lenguaje de programación Borland Delphi



Con la siguiente función obtendremos el estado de un servicio del Sistema Operativo (Iniciado, Detenido, Pausado, Iniciando, Deteniendo). Para ello añadiremos un formulario, dentro de éste colocaremos dos cuadros de texto (TEdit) y un botón (TButton). Un cuadro de texto será para especificar el nombre del servicio a comprobar y el otro para especificar la máquina en la que se comprobará. Puesto que esta función utiliza otra de la API de Windows llamada "OpenService", la cual se haya en la DLL: "advapi32.dll" , en el USES de la unidad colocaremos "WinSvc":

unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, WinSvc, StdCtrls;

type
  TformMenuPrincipal = class(TForm)
    txtServicio: TEdit;
    txtPC: TEdit;
    bComprobar: TButton;
    procedure bComprobarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formMenuPrincipal: TformMenuPrincipal;

implementation

{$R *.dfm}


// obtiene el estado de un servicio
function estadoServicio(sPC, sServicio : string ) : string;
var
  schm, schs   : SC_Handle;
  ss     : TServiceStatus;
  dwStat : DWord;
begin
  dwStat := 0;
  schm := OpenSCManager(PChar(sPC), Nil, SC_MANAGER_CONNECT);
  if (schm > 0) then
  begin
    schs := OpenService(schm, PChar(sServicio), SERVICE_QUERY_STATUS);
    if (schs > 0) then
    begin
      if (QueryServiceStatus(schs, ss)) then
      begin
        dwStat := ss.dwCurrentState;
      end;
      CloseServiceHandle(schs);
    end;
    CloseServiceHandle(schm);
  end;
  case dwStat of
    0 : Result := 'No disponible';
    1 : Result := 'Detenido';
    2 : Result := 'Iniciando';
    3 : Result := 'Deteniendo';
    4 : Result := 'Iniciado';
    7 : Result := 'Pausado';
  else
    result := inttostr(dwstat);
  end;
end;


procedure TformMenuPrincipal.bComprobarClick(Sender: TObject);
begin
  showmessage (estadoServicio(txtPC.Text, txtServicio.Text))
end;

end.




Publicado el: 2005-01-30

Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+