Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
10 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Ajuda a direcionar
8/12/2016, 01:17 por miiiih

» Alterar uma palavra num arquivo de texto
5/12/2016, 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6964 usuários registrados
O último usuário registrado atende pelo nome de Ricardo Cassolatto

Os nossos membros postaram um total de 17119 mensagens em 2577 assuntos

Serviços do Windows

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Anexo Serviços do Windows

Mensagem por Marcos Guedes em 23/8/2009, 23:21

Abaixo segue uma ótima rotina para incluir e remover serviços no windows. (Não fui eu quem fiz!)
Fiz uma pequena adaptação, mas a quem interessar, poderá analisar a rotina original no seguinte link:
- [Você precisa estar registrado e conectado para ver este link.]

Código:
/// <sumary>
/// Fonte: http://www.c-sharpcorner.com/UploadFile/sachin.nigam/InstallingWinServiceProgrammatically11262005061332AM/InstallingWinServiceProgrammatically.aspx
/// </sumary>

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Servicos
{
    public class InstalarServico
    {
        private string caminhoServico = "";
        private string nomeServico = "";
        private string nomeExibicao = "";
        private string mensagemStatus = ""; // Armazena o status da operação
        private TextBox txtStatus = null;


        #region Importando DLL's
        [DllImport("advapi32.dll")]
        private static extern IntPtr OpenSCManager(string lpMachineName, string lpSCDB, int scParameter);

        [DllImport("Advapi32.dll")]
        private static extern IntPtr CreateService(IntPtr SC_HANDLE, string lpSvcName, string lpDisplayName,
            int dwDesiredAccess, int dwServiceType, int dwStartType, int dwErrorControl, string lpPathName,
            string lpLoadOrderGroup, int lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);

        [DllImport("advapi32.dll")]
        private static extern void CloseServiceHandle(IntPtr SCHANDLE);

        [DllImport("advapi32.dll")]
        private static extern int StartService(IntPtr SVHANDLE, int dwNumServiceArgs, string lpServiceArgVectors);

        [DllImport("advapi32.dll", SetLastError = true)]
        private static extern IntPtr OpenService(IntPtr SCHANDLE, string lpSvcName, int dwNumServiceArgs);

        [DllImport("advapi32.dll")]
        private static extern int DeleteService(IntPtr SVHANDLE);

        [DllImport("kernel32.dll")]
        private static extern int GetLastError();
        #endregion

        public void setCaminhoServico(string caminho)
        {
            /**
            * Altera o caminho do serviço
            */
            this.caminhoServico = caminho;
        }
                     
        public void setNomeServico(string nome)
        {
            /**
            * Altera o nome do serviço
            */
            this.nomeServico = nome;
        }

        public void setNomeExibicao(string nome)
        {
            /**
            * Altera o nome para exibição
            */
            this.nomeExibicao = nome;
        }

        public void setTxtStatus(TextBox txtStatus)
        {
            this.txtStatus = txtStatus;
        }

        public string getMensagemStatus()
        {
            /**
            * Retorna a mensagem de status da operação.
            */
            return this.mensagemStatus;
        }

        public bool instalarServico()
        {
            /**
            * Instala o serviço
            */
            #region Verifica se as variáveis necessárias estão preenchidas
            if (
                (this.caminhoServico.Length == 0) ||
                (this.nomeServico.Length == 0) ||
                (this.nomeExibicao.Length == 0)
            )
            {               
                this.mensagemStatus = "Campos não preenchidos";

                if (this.txtStatus != null)
                    this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                this.mensagemStatus = "Campos não preenchidos";
                return false;
            }
            #endregion

            #region Declaração de constantes
            int SC_MANAGER_CREATE_SERVICE = 0x0002;
            int SERVICE_WIN32_OWN_PROCESS = 0x00000010;
            //int SERVICE_DEMAND_START = 0x00000003;
            int SERVICE_ERROR_NORMAL = 0x00000001;
            int STANDARD_RIGHTS_REQUIRED = 0xF0000;
            int SERVICE_QUERY_CONFIG = 0x0001;
            int SERVICE_CHANGE_CONFIG = 0x0002;
            int SERVICE_QUERY_STATUS = 0x0004;
            int SERVICE_ENUMERATE_DEPENDENTS = 0x0008;
            int SERVICE_START = 0x0010;
            int SERVICE_STOP = 0x0020;
            int SERVICE_PAUSE_CONTINUE = 0x0040;
            int SERVICE_INTERROGATE = 0x0080;
            int SERVICE_USER_DEFINED_CONTROL = 0x0100;
            int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED |
            SERVICE_QUERY_CONFIG |
            SERVICE_CHANGE_CONFIG |
            SERVICE_QUERY_STATUS |
            SERVICE_ENUMERATE_DEPENDENTS |
            SERVICE_START |
            SERVICE_STOP |
            SERVICE_PAUSE_CONTINUE |
            SERVICE_INTERROGATE |
            SERVICE_USER_DEFINED_CONTROL);
            int SERVICE_AUTO_START = 0x00000002;
            #endregion Constants declaration.

            try
            {
                IntPtr sc_handle = OpenSCManager(null, null, SC_MANAGER_CREATE_SERVICE);
                if (sc_handle.ToInt32() != 0)
                {
                    IntPtr sv_handle = CreateService(sc_handle, this.nomeServico, this.nomeExibicao,
                        SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
                        this.caminhoServico, null, 0, null, null, null);
                    if (sv_handle.ToInt32() == 0)
                    {
                        CloseServiceHandle(sc_handle);
                       
                        this.mensagemStatus = "Não foi possível instalar o serviço";
                       
                        if (this.txtStatus != null)
                            this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                        return false;
                    }
                    else
                    {
                        // Inicia o serviço
                        int i = StartService(sv_handle, 0, null);
                        // Se o valor de i for zero, então houve um erro ao iniciar o serviço.
                        // Obs: O erro pode ocorrer se o serviço já esteja funcionando ou algum outro problema.
                        if (i == 0)
                        {
                            this.mensagemStatus = "Não foi possível iniciar o serviço";

                            if (this.txtStatus != null)
                                this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                            return false;
                        }
                        this.mensagemStatus = "Serviço iniciado com sucesso";

                        if (this.txtStatus != null)
                            this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                        CloseServiceHandle(sc_handle);
                        return true;
                    }
                }
                else
                {
                    this.mensagemStatus = "SCM não foi aberto com sucesso";

                    if (this.txtStatus != null)
                        this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                    return false;
                }
            }
            catch (Exception oErro)
            {
                this.mensagemStatus = oErro.Message;

                if (this.txtStatus != null)
                    this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                return false;
            }
        }

        public bool desinstalarServico()
        {
            /**
            * Desinstala o serviço
            */
            #region Verifica se as variáveis necessárias estão preenchidas
            if (this.nomeServico.Length == 0)
            {
                this.mensagemStatus = "Campos não preenchidos";

                if (this.txtStatus != null)
                    this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                return false;
            }
            #endregion

            int GENERIC_WRITE = 0x40000000;
            IntPtr sc_hndl = OpenSCManager(null, null, GENERIC_WRITE);
            if (sc_hndl.ToInt32() != 0)
            {
                int DELETE = 0x10000;
                IntPtr svc_hndl = OpenService(sc_hndl, this.nomeServico, DELETE);
                [Você precisa estar registrado e conectado para ver este link.]
                if (svc_hndl.ToInt32() != 0)
                {
                    int i = DeleteService(svc_hndl);
                    if (i != 0)
                    {
                        CloseServiceHandle(sc_hndl);

                        this.mensagemStatus = "Serviço deletado com sucesso";

                        if (this.txtStatus != null)
                            this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                        return true;
                    }
                    else
                    {
                        CloseServiceHandle(sc_hndl);

                        this.mensagemStatus = "Não foi possível excluir o serviço especificado";

                        if (this.txtStatus != null)
                            this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                        return false;
                    }
                }
                else
                {
                    this.mensagemStatus = "Não foi possível excluir o serviço especificado";

                    if (this.txtStatus != null)
                        this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                    return false;
                }
            }
            else
            {
                this.mensagemStatus = "Não foi possível excluir o serviço especificado";

                if (this.txtStatus != null)
                    this.txtStatus.Text += "\r\n" + this.mensagemStatus;

                return false;
            }
        }

        /*
        public static void Main()
        {
            string caminhoServico = @"C:\servico\servico.exe";
            string nomeServico = "Nome do Serviço";
            string nomeExibicao = "Nome para exibição";

            InstalarServico obj = new InstalarServico();
            obj.setCaminhoServico(caminhoServico);
            obj.setNomeServico(nomeServico);
            obj.setNomeExibicao(nomeExibicao);
            obj.instalarServico();
        }
        */
    }
}


Última edição por Marcos Guedes em 19/8/2010, 10:19, editado 1 vez(es)

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Serviços do Windows

Mensagem por Marcos Guedes em 24/8/2009, 00:18

Abaixo segue um aplicativo que fiz para testar a rotina:
- [Você precisa estar registrado e conectado para ver este link.]

A quem interessar, segue o link do projeto:
- [Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Serviços do Windows

Mensagem por anderson_rodrigo em 30/8/2010, 14:22

Marcos,

Vou aproveitar seu topico para colocar aqui como fazer uma aplicação de Serviços do Windows.

Neste link abaixo explica toda a montagem e até a geração do instalador para rodar a aplicação.

[Você precisa estar registrado e conectado para ver este link.]


Para complementar, na minha aplicação fiz ele iniciar a aplicação a partir de uma caminho em um arquivo de texto.

No Metodo OnStart.
Código:


 protected override void OnStart(string[] args)
        {

            string sysDrive = System.Environment.GetEnvironmentVariable("SystemDrive") + @"";
            string filePath = Path.Combine(sysDrive, "arquivo.txt");

            FileInfo lcArquivo = new FileInfo(@filePath);

            TextReader reader = lcArquivo.OpenText();

            string localArquivo = reader.ReadLine();

            reader.Close();


            Process.Start(@localArquivo);
        }


Para fechar a aplicação:

No Metodo OnStop

Código:

 protected override void OnStop()
        {

            Process[] processInMachine = Process.GetProcesses();

            foreach (Process itemProcess in processInMachine)
            {
                if (itemProcess.ProcessName == "integracao")
                {
                    int pid = itemProcess.Id;

                    Process procSel = Process.GetProcessById(pid);
                    procSel.Kill();
                }
            }
        }



anderson_rodrigo
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Anexo Re: Serviços do Windows

Mensagem por Marcos Guedes em 30/8/2010, 16:39

Reputado, Anderson!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Anexo Re: Serviços do Windows

Mensagem por Conteúdo patrocinado Hoje à(s) 07:44


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum