No suelo responder preguntas sobre bases de datos, pero si es cuestión de servicios la cosa es diferente.
Para saber si un servicio esta instalado:
Código Delphi
[-]
uses WinSvc;
function isInstalled(Nombre: String): Boolean;
var
ServiceControlManager: SC_HANDLE;
Service: SC_HANDLE;
ServiceStatus: SERVICE_STATUS;
begin
Result:= FALSE;
ServiceControlManager:= OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
if ServiceControlManager <> 0 then
begin
Service:= OpenService(ServiceControlManager,PChar(Nombre),GENERIC_READ);
if Service <> 0 then
begin
Result:= TRUE;
CloseServiceHandle(Service);
end;
CloseServiceHandle(ServiceControlManager);
end;
end;
Para saber si esta iniciado
Código Delphi
[-]
function isRunning(Nombre: String): Boolean;
var
ServiceControlManager: SC_HANDLE;
Service: SC_HANDLE;
ServiceStatus: SERVICE_STATUS;
begin
Result:= FALSE;
ServiceControlManager:= OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
if ServiceControlManager <> 0 then
begin
Service:= OpenService(ServiceControlManager,PChar(Nombre),GENERIC_READ);
if Service <> 0 then
begin
if QueryServiceStatus(Service, ServiceStatus) then
Result:= ServiceStatus.dwCurrentState = SERVICE_RUNNING;
CloseServiceHandle(Service);
end;
CloseServiceHandle(ServiceControlManager);
end;
end;
En el caso que nos ocupa el nombre del servicio, según google
, es MySql así que si queremos saber si esta instalado:
Código Delphi
[-]
if not isInstalled('MySql') then
begin
end;