Dev & EngARTIGO

Criando serviços para Windows – Parte 01

Olá, caros leitores! Nesse artigo veremos como criar serviços do Windows que usam interface gráfica.
Estou utilizando Delphi↳Delphi3 conteúdosCom Delphi, Nelogica mira no mercado financeiro internacionalDev (Back & Front) · mar 2023Desenvolvedores Python agora podem acessar bibliotecas visuais do Delphi gratuitamenteDev (Back & Front) · ago 2022The Velopers #26 – Alexandre “Magoo” CostaGestão Dev & TI · mai 2019Ver tudo em Dev (Back & Front) → 2007, mas pode ser criado em outras versões também.

Resolvi criar esse tipo de artigo porque é muito difícil encontrar uma matéria completa na internet que nos ajude e atenda a nossa necessidade. Temos que procurar muito e ler vários textos até conseguir o que queremos. Geralmente quando estamos atrás de uma informação é porque precisamos dela o mais rápido possível, com o maior nível de detalhes que pudermos encontrar e de forma objetiva, não é?

Nosso trabalho foi dividido em três partes, são elas:

  1. Primeiros passos para criação do serviço – Parte 01
  2. Criação de Threads para trabalhar com o serviço criado – Parte 02
  3. Criação da tela de interação com o usuário – Parte 03

1. Primeiros passos para criação do serviço

1.1 Introdução

a. O que é um serviço?

Um serviço do Windows é uma aplicação que roda em segundo plano executando operações sem a intervenção do usuário e continua rodando enquanto o Windows estiver em execução.

Essas operações podem ser consultas a um FTP para verificar se há atualizações de um software, consultas a um banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data →, monitoramento de arquivos ou as operações do usuário, pode ser uma aplicação servidora, leia o artigo Aplicação Multi-camadas para aprender como criar aplicação servidora, enfim, temos várias funcionalidades que podemos colocar em um serviço para ele fazer.

O serviço é carregado logo que o Windows é iniciado, mesmo que você esteja na tela de login do Windows o serviço já é executado e fica residente na memória executando as operações na qual foi programado para fazer.

b. Acessando o gerenciador de serviços do Windows

Para acessarmos o gerenciador de serviços do Windows e visualizar todos os serviços que estão instalados e que estão rodando em nosso computador, siga os seguintes passos:

Vá ao painel de controle –> Escolha ferramentas administrativas –> Escolha serviços

ou

Iniciar –> Executar –> Digite services.msc e clique em OK.

Irá exibir uma janela como a exibida a seguir:

Ao selecionar um serviço ele mostra do lado esquerdo o nome e algumas ações que podemos executar no serviço selecionado como Iniciar, Parar ou Reiniciar. Do lado direito temos a Descrição do serviço, Status e Tipo de inicialização.

OBS: Importante!!! Não é possível criar serviços para Windows 95, 98 ou ME. Para trabalhar com serviços é necessário que o Windows seja NT, 2000, 2003 ou XP.

1.2 Criando serviço no Delphi

Abra o Delphi e selecione File -> New -> Other.

Irá exibir a janela a seguir:

Escolha a categoria Delphi Projects e a opção Service Application dentro dessa categoria e clique em OK.

Ao clicar em OK irá abrir uma tela como a exibida abaixo:

Antes de continuarmos, vamos salvar nosso projeto.

Vá no menu File e clique em Save All.

Salve a unit com o nome untPrincipal e o projeto como ServicoWindows.

Clique na unit untPrincipal, pressione a tela F12 para visualizarmos o form.

OBS: Como é possível observar, esse formulário parece com um DataModule, permite colocarmos somente componentes não visuais nele.

a. Conhecendo as propriedades:

A seguir descrevo algumas propriedades importantes da classe TService:

  • AllowPause -> Quando true indica que o serviço pode ser pausado. Deixe como está.
  • AllowStop -> Quanto true indica que o serviço pode ser parado. Deixe como está.
  • DisplayName -> Especifica o nome do serviço que irá aparecer no gerenciador de serviços do Windows, na coluna Nome. Digite o nome Criando Serviços para Windows com Delphi nessa propriedade.
  • Interactive -> Quando true indica se haverá interação com o Windows ou com o usuário. Como essa é a finalidade de nosso artigo, coloque essa propriedade para true.
  • Name -> Nome do nosso serviço, é a mesma coisa quando damos um nome a um formulário, um botão ou um data module. Digite o nome srvPrincipal nessa propriedade.
  • StartType ->Define a forma com que o serviço será iniciado. Vamos deixar stAuto mesmo.

b. Conhecendo os eventos:

A seguir descrevo os eventos da classe TService:

  • AfterInstall -> Ocorre após o nosso serviço ser registrado no gerenciador de serviços do windows.
  • AfterUninstall -> Ocorre após ser removido do gerenciador de serviços do windows.
  • BeforeInstall -> Ocorre antes de o serviço ser registrado no gerenciador de serviços do windows.
  • BeforeUninstall -> Ocorre antes de ser removido do gerenciador de serviços do windows.
  • OnContinue ->Ocorre após receber o comando de continuar a execução após ser pausado.
  • OnExecute -> Junto com o serviço existe uma thread que é executada com ele. Esse evento ocorre quando essa thread é iniciada.
  • OnPause -> Ocorre após o serviço ser pausado temporariamente.
  • OnStart -> Ocorre após o serviço ser iniciado, esse evento ocorre primeiro que o evento OnExecute.
  • OnStop -> Ocorre quando o serviço é parado pelo gerenciador de serviços do Windows.

c. Programando o serviço:

Agora que nós conhecemos as propriedades e eventos mais importantes da classe TService, vamos começar a programação.

Declare a unit Registry na sessão uses da nossa unit, como mostrado abaixo:

Dê um duplo clique no evento AfterInstall e digite o seguinte código:

No começo do nosso artigo foi mostrado como fazer para exibir o gerenciador de serviços do Windows. Vimos que ao lado da coluna Nome, é exibida a descrição do serviço. A rotina acima é responsável por colocar essa descrição no nosso serviço.

A única tarefa que o nosso serviço faz até agora é colocar a descrição, mas já podemos testar nossa aplicação.

Compile nossa aplicação com CTRL F9, clique em Iniciar e em seguida escolha Executar. Digite o caminho completo de onde sua aplicação foi salva e o nome do executável. Coloque ao final do nome do executável /install.

Ex.: E:\\Sistemas\\Servicos\\Parte01\\ServicoWindows.exe /install

Você irá receber uma mensagem que o serviço foi instalado com sucesso.

Abra o gerenciador de serviços do Windows e procure o serviço criado. Procure pelo nome que colocou em DisplayName.

Para desinstalar o serviço digite o mesmo caminho e ao invés de digitar /install digite /uninstall.

Ex.: E:\\Sistemas\\Servicos\\Parte01\\ServicoWindows.exe /uninstall

Pronto, os passos mais importantes para criarmos um serviço para Windows foram vistos nesse artigo. Acabamos de conhecer os conceitos, o que é um serviço, onde fica instalado, para que serve e como criar uma aplicação simples. Essas características são importantes para que nosso trabalho seja bem feito.

Parabéns por ter chegado até aqui. Até o próximo artigo.

Tenho 10 anos de experiência em desenvolvimento de aplicações web, serviços e aplicações desktop nas tecnologias Asp .Net, C#, MVC, WEB API, WCF, jQuery, Ajax, Bootstrap, ASP, PHP, Entity Framework, NHibernate, Dapper, SQL Server 2000 ao 2014, Oracle 10g, My-SQL e Delphi. Sou pós-graduado em desenvolvimento de aplicações .Net pela FIAP e possuo 2 certificações microsoft. Já atuei com treinamentos, em fábrica de software, automação industrial, área de logística e atualmente na área da saúde com sistemas para serviços médicos e de agendamentos de consultas, a experiência em vários ramos de negócio me proporciona mais facilidade e flexibilidade para atuar em qualquer área.

Ver perfil →
Leia também