Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, desenvolvi uma aplicação no BDS2009 para que meu servidor DataSnap rode como serviço, segundo o artigo
http://edn.embarcadero.com/article/39277.
Agora estou querendo desenvolver um código para iniciar este serviço. Minha aplicação já cria o serviço e se eu for no painel de controle, consigo iniciar o serviço. Mas queria iniciar este serviço via programação.
Alguém pode me ajudar?
Boa tarde.
Estou meio enferrujado em Delphi, mas encontrei o seguinte post:
http://programero.blogspot.com/2008/11/iniciar-e-parar-servios-do-windows.html
também encontrei este código:
Unit ControlService;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, WinSvc;
const
ServiceName='NOME_DO_SERVICO';
type
TfrmMain = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if (schSCManager<=0) then
begin
if (schService<=0) then
begin
begin
begin
if ControlService(schService,SERVICE_CONTROL_STOP,ssStatus) then
begin
while (QueryServiceStatus(schService,ssStatus)) do
begin
Application.ProcessMessages;
if ssStatus.dwCurrentState=SERVICE_STOP_PENDING then
begin
end
else
if ssStatus.dwCurrentState=SERVICE_STOPPED then
stsMessage.SimpleText:='Service Stop Ok'
else
stsMessage.SimpleText:='Service Stop Fail';
end
else
var
Argv:PChar;
begin
if StartService(schService,0,Argv) then
begin
while (QueryServiceStatus(schService,ssStatus)) do
begin
Application.ProcessMessages;
if ssStatus.dwCurrentState=SERVICE_START_PENDING then
begin
end
else
if ssStatus.dwCurrentState=SERVICE_RUNNING then
stsMessage.SimpleText:='Service Start Ok'
else
stsMessage.SimpleText:='Service Start Fail';
end
else
end.
não estou com o delphi aqui e não pude testar... mas com certeza o caminho é executar as funções de sistema operacional.
Qualquer coisa vai no help do delphi, unit WinSvc.