Ir para conteúdo
Fórum Script Brasil
  • 0

VB.NET windows Service


guisinho

Pergunta

Imports System.IO
Imports System.Data
Imports System.Data.Sql
Imports System.Data.Sql.SqlNotificationRequest
Imports System.Environment
Imports System.Activator
Imports System.Data.Odbc
Imports System.Data.OracleClient


Public Class Service2

    Private _fs As FileStream
    Private _sr As StreamWriter

    Sub Main1()

        Dim X As DateTime = DateTime.Now
        'envia data para a tabela que acessa o BD, onde X é a data
        Dim Y As String = Environment.UserName
        'Envia Login como uma string para o campo da tabela que acessa o BD, onde Y é o LOGIN

        Console.Read()
    End Sub

    Public Shared Function GetProcesses() As Process()


        Dim ProcessName As String
        Dim returnValue As Process()
        Dim instance As Process 'teste
        instance.Kill() 'teste
Process.GetProcessesByName(ProcessName As String)As System.diagnostics.Process()
ProcessName:
        'serviços bloqueados em lista, podem ser adicionados quantos serviços for preciso
        Dim WINWORD As Process() 'Processo Office
        Dim notepad As Process() 'Bloco de notas
        Dim firefox As Process() 'Browser 
        Dim AcroRd32 As Process() 'acrobat reader
        Dim iexplore As Process() 'Browser
        Dim EXCEL As Process() 'processo office
        Dim avgtray As Process() 'processo anti virus
        Dim RTHDCPL As Process() 'processo interno de arquivo
        Dim Explore As Process() 'Serviço Windows
        Dim crss As Process() 'serviço de RSS do windows
        Dim avgrsx As Process() 'Serviço de anti virus
        Dim cftmon As Process() 'falta processo 
        Dim pa5clint As Process()
        returnValue = Process.GetProcesses()

        Dim Y1 As Integer 'Resposta do BD
        If Y1 = 1 Then 'o usuário deve o dia anterior no Ronda
            Kill(ProcessName As String) and
            FileOpen(1, OpenMode.Output, OpenAccess.Default, OpenShare.Shared)
            'Fecha antes de reabrir em outro modo.
            FileClose(1)
        Else : Y1 = 0 'o usuário não deve o dia anterior no ronda
            End
        End If
        'testa para o programa rodar todo dia que Hoje for maior que o dia de inicio do programa.
        Dim thisDate As Date 'dia de hoje
        Dim X As DateTime = DateTime.Now 'momento que o programa inicia chama a variável
        thisDate = Today
        If thisDate > Today And thisDate > X Then 'testa se x é menor que this date, sendo menor o programa reabre.

        End If

    End Function

    Protected Overrides Sub OnStart(ByVal args() As String)
        'Aqui é a trava do sistema por enquanto mensagem e executa o Rhonda
        _fs = New FileStream("c:\LogPrimeiroServico.txt", _
            FileMode.Append, FileAccess.Write)
        _sr = New StreamWriter(_fs)
        _sr.WriteLine(String.Format _
            ("O Primeiro Serviço foi iniciado as {0}.", Now))
        _sr.Flush() 'o código de restrição de acesso está em funcionamento até aqui.
    End Sub

    Protected Overrides Sub OnStop()
        'caso a resposta do BD seja a de não travar
        _sr.WriteLine(String.Format _
            ("O Primeiro Serviço foi parado as {0}.", Now))
        _sr.Flush()
        _sr.Close()
        _fs.Close()
    End Sub
End Class

Onde está meu erro aqui?

O programa não busca login, não conecta na rede, não fica na lista de serviços do windows.

O que ele deveria fazer?

Deveria 'capturar o login do usuário' conectar no Banco de Dados Oracle, fazer um Teste usando as variáveis X e Y definidas no programa e receber como resposta do banco: 1, ou 0.

Sendo 0 a resposta o serviço não faz nada, sendo 1 o serviço da kill nos serviços listados e abre o Software de preenchimento do banco.

No fim o serviço é para saber quem tem o banco preenchido no dia ou não e 'obrigar' as pessoas a preencher o mesmo.

Eu configurei a conexão com o banco da seguinte forma:

bancoub3.jpg

E então? Onde errei?

Ficaria realmente grato com a ajuda de vocês ou mesmo dicas.

Abraço

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Imports System.IO
Imports System.Data
Imports System.Data.Sql
Imports System.Data.Sql.SqlNotificationRequest
Imports System.Environment
Imports System.Activator
Imports System.Data.Odbc
Imports System.Data.OracleClient


Public Class Service2

    Private _fs As FileStream
    Private _sr As StreamWriter

    Sub Main1()

        Dim X As DateTime = DateTime.Now
        'envia data para a tabela que acessa o BD, onde X é a data
        Dim Y As String = Environment.UserName
        'Envia Login como uma string para o campo da tabela que acessa o BD, onde Y é o LOGIN

        Console.Read()
    End Sub

    Public Shared Function GetProcesses() As Process()


        Dim ProcessName As String
        Dim returnValue As Process()
        Dim instance As Process 'teste
        instance.Kill() 'teste
Process.GetProcessesByName(ProcessName As String)As System.diagnostics.Process()
ProcessName:
        'serviços bloqueados em lista, podem ser adicionados quantos serviços for preciso
        Dim WINWORD As Process() 'Processo Office
        Dim notepad As Process() 'Bloco de notas
        Dim firefox As Process() 'Browser 
        Dim AcroRd32 As Process() 'acrobat reader
        Dim iexplore As Process() 'Browser
        Dim EXCEL As Process() 'processo office
        Dim avgtray As Process() 'processo anti virus
        Dim RTHDCPL As Process() 'processo interno de arquivo
        Dim Explore As Process() 'Serviço Windows
        Dim crss As Process() 'serviço de RSS do windows
        Dim avgrsx As Process() 'Serviço de anti virus
        Dim cftmon As Process() 'falta processo 
        Dim pa5clint As Process()
        returnValue = Process.GetProcesses()

        Dim Y1 As Integer 'Resposta do BD
        If Y1 = 1 Then 'o usuário deve o dia anterior no Ronda
            Kill(ProcessName As String) and
            FileOpen(1, OpenMode.Output, OpenAccess.Default, OpenShare.Shared)
            'Fecha antes de reabrir em outro modo.
            FileClose(1)
        Else : Y1 = 0 'o usuário não deve o dia anterior no ronda
            End
        End If
        'testa para o programa rodar todo dia que Hoje for maior que o dia de inicio do programa.
        Dim thisDate As Date 'dia de hoje
        Dim X As DateTime = DateTime.Now 'momento que o programa inicia chama a variável
        thisDate = Today
        If thisDate > Today And thisDate > X Then 'testa se x é menor que this date, sendo menor o programa reabre.

        End If

    End Function

    Protected Overrides Sub OnStart(ByVal args() As String)
        'Aqui é a trava do sistema por enquanto mensagem e executa o Rhonda
        _fs = New FileStream("c:\LogPrimeiroServico.txt", _
            FileMode.Append, FileAccess.Write)
        _sr = New StreamWriter(_fs)
        _sr.WriteLine(String.Format _
            ("O Primeiro Serviço foi iniciado as {0}.", Now))
        _sr.Flush() 'o código de restrição de acesso está em funcionamento até aqui.
    End Sub

    Protected Overrides Sub OnStop()
        'caso a resposta do BD seja a de não travar
        _sr.WriteLine(String.Format _
            ("O Primeiro Serviço foi parado as {0}.", Now))
        _sr.Flush()
        _sr.Close()
        _fs.Close()
    End Sub
End Class

Onde está meu erro aqui?

O programa não busca login, não conecta na rede, não fica na lista de serviços do windows.

O que ele deveria fazer?

Deveria 'capturar o login do usuário' conectar no Banco de Dados Oracle, fazer um Teste usando as variáveis X e Y definidas no programa e receber como resposta do banco: 1, ou 0.

Sendo 0 a resposta o serviço não faz nada, sendo 1 o serviço da kill nos serviços listados e abre o Software de preenchimento do banco.

No fim o serviço é para saber quem tem o banco preenchido no dia ou não e 'obrigar' as pessoas a preencher o mesmo.

Eu configurei a conexão com o banco da seguinte forma:

bancoub3.jpg

E então? Onde errei?

Ficaria realmente grato com a ajuda de vocês ou mesmo dicas.

Abraço

Os erros que aparecem são:

só está dando dois erros.

Ali na linha 33 no (ProcessName, As String)

**O erro é Expression Expected

e na linha 55 no Kill(ProcessName, As String) and

**O erro é Expression Expected

Se eu tirar a virgula o erro vira:

"Comma, ')', or a valid expression continuation expected."

Se eu mudo para por exemplo:

Process.GetProcessesByName(ProcessName)As System.diagnostics.Process()

A mensagem de erro é a seguinte: End of Statement expected.

Link para o comentário
Compartilhar em outros sites

  • 0
Qual é a linha 33 e a55?

Abraços...

Linha 33 (erro sublinhado) Process.GetProcessesByName(ProcessName As String)As System.diagnostics.Process()

linha 55 (erro sublinhado) Kill (ProcessName, As String) and

Link para o comentário
Compartilhar em outros sites

  • 0

Eu mudei um pouco a estrutura do programa.

Agora só preciso conectar ao BD passar o login windows do usuário para o BD e a data de hoje.

Como faço isso?

Alguém pode me ajudar com a questão da conexão no oracle?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...