Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
18 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 18 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
TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Controlar Scanner Twain

31/3/2017, 17:31 por Kleber R Bento

Estou usando o EZTW32.DLL para criar uma ferramenta que escaneia e gera PDF. Porém com esses …

Comentários: 0

Estatísticas
Temos 7079 usuários registrados
O último usuário registrado atende pelo nome de albsilva

Os nossos membros postaram um total de 48 mensagens em 25 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


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