Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
24 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 23 Visitantes :: 2 Motores de busca

thiag0ms

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Brasília
Estamos no Twitter
Nossa Comunidade
Nosso Grupo
Últimos assuntos
» Erro no Projeto Chat
Hoje à(s) 11:38 por Sub-Zero

» Modificar TitleBar e Icone do Executavel.
Hoje à(s) 11:24 por Sub-Zero

» Criar atalho, SYS(2020) e Desktop
Ontem à(s) 23:07 por Sub-Zero

» Karaoke feito em FoxPro 2.6
Ontem à(s) 18:51 por Sub-Zero

» Como separar caminho do diretório?
Ontem à(s) 18:49 por Sub-Zero

» Utilizando PHPMailer
Ontem à(s) 09:45 por paulomelo

» Programador em Visual Foxpro
Ontem à(s) 09:03 por mauro victoria

» Link PHP (Dúvida)
21/5/2012, 08:25 por BrunoMesquita

» Fundo do PROJETO Transparente??
20/5/2012, 19:48 por thiag0ms

» Minimizar , Maximizar e Restaurar
18/5/2012, 16:28 por FERNANDOMATRELLA

» Pivot Table no sql server
15/5/2012, 12:35 por edspicer

» Scroll EditBox Automatico
14/5/2012, 10:31 por Julio

» Select Nexval do FoxPro no OracleXE
10/5/2012, 00:16 por Sub-Zero

» Colocar gif na caixa do MESSAGEBOX ()
9/5/2012, 14:39 por Linghston

» Comparar Versões do programa.exe
8/5/2012, 16:10 por Linghston

» Menu lateral
7/5/2012, 02:36 por lardecristo

» Fazer com que a tela do sistema assume a janela principal
7/5/2012, 02:20 por lardecristo

» Trocar Palavra no Sistema
7/5/2012, 01:55 por lardecristo

» invocar Dll em Xbase
7/5/2012, 01:18 por lardecristo

» Fechar Porta Aberta
7/5/2012, 01:00 por lardecristo

Erro no Projeto Chat

2/5/2012, 08:37 por renatojunior2009

Bom dia Pessoal,

Estou desenvolvendo um chat , só que estou com dois erros o qual eu não sei …

Comentários: 7

Modificar TitleBar e Icone do Executavel.

23/5/2012, 20:17 por thiag0ms

Oi, tem como desabilitar o botao de Maximizar do TitleBar...

Eu keria simular uma TitleBar...mais …

Comentários: 5

Criar atalho, SYS(2020) e Desktop

23/5/2012, 17:57 por thiag0ms

Ola denovo...3 dúvidas...

como diz o título do tópico eu queria como criar uma atalho no …

Comentários: 3

Karaoke feito em FoxPro 2.6

23/5/2012, 11:45 por fabiomacarrao

Bom dia a todos. Desenvolvi um programa em FoxPro for windows 2.6 para karaoke. tenho mais de 2700 …

Comentários: 3

Como separar caminho do diretório?

20/5/2012, 21:30 por thiag0ms

tentei di muitas formas mais ainda não consegui...

bom, eu fis uma rotininha para que quando o …

Comentários: 10

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

Os nossos membros postaram um total de 14433 mensagens em 2047 assuntos

Serviços do Windows 5 5 2

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://[Você precisa estar registrado e conectado para ver este link.]
/// </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);
                //Console.WriteLine(svc_hndl.ToInt32());
                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.

Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras

Marcos Guedes
Webmaster
Webmaster


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