Criando Tela de Atalho no Windows Form

Utilizando Visual Studio.NET 2005

Este artigo tem o objetivo de ajudar a você, desenvolvedor, a criar teclas de atalho como: F2, F4, F5 e outros utilizando o Visual Studio.NET 2005.

Requisitos:

  • Framework 2.0
  • Visual Studio.NET 2005;
  • Ter projeto criado do tipo Windows Forms;
  • Linguagem de Programação C#.NET

Na prática

Para início de conversa, imagino que você já tem um form MDI em sua aplicação.

1.1_ata

A referência 1.1 mostra claramente o form principal da solução MDI. Note que no menu há uma tecla de atalho como F12 (sair). Para cada item do menu colocarei uma tecla de atalho.

1.2_ata

O primeiro passo é: acesse as propriedades do formulário MDI e procure a properties chamada KEYPREVIEW.

Mude o valor de false para TRUE. Como mostrado na referência 1.2 ao lado.

Depois de colocado como true o evento KeyPreview, e continuando dentro das propriedades, clique no localizado no topo da mesma. Procure o item Key e o sub-item KeyDown. Depois de achado, clique duas vezes para que seja criado automaticamente o evento no formulário principal.

1.3_ata

Automaticamente foi criado um evento no código C#.NET do formulário.

private void FrmPrincipal_KeyDown(object sender, KeyEventArgs e)
{}

Agora, dentro deste método criado, programarei para que, ao clicar F2 ou qualquer outra tecla de atalho, o formulário específico seja chamado.

private void FrmPrincipal_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F10:
                    notaFiscalToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F7:
                    clienteToolStripMenuItem1_Click(sender, e);
                    break;
                case Keys.F8:
                    contabilistaToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F9:
                    empresaToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F2:
                    gerarArquivoToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F3:
                    imprimirToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F4:
                    saldoISSToolStripMenuItem_Click(sender, e);
                    break;
                case Keys.F12:
                    sairToolStripMenuItem_Click(sender, e);
                    break;
            }
        }

 

Explicação:

Note que, no método, utilizei o comando switch(e.Keycode), dessa forma ele pega a tecla clicada pelo usuário.
Caso for F10, é chamado (notaFiscalToolStripMenuItem_Click(sender, e), que abre o formulário de nota fiscal.
O comando case Keys. : mostra várias teclas disponíveis para serem habilitadas como tecla de atalho.

1.4_ata

No menu, para mostrar a tecla de atalho especificamente como na figura de referência 1.7, basta editar o campo e digitar F7 ou o nome da tecla.

1.6_ata

via: imasters/mauriciojr

assinatura_blog

Cache usando Visual Studio.NET 2005

Quero hoje mostrar na prática como utilizar “cache” em sistemas ASP.NET, ou seja, sistemas e sites WEB. Nos dias de hoje, com novas ferramentas e controles da ferramenta do Visual Studio.NET, o sistema do tipo WEB tem entrado mais no mercado com aceitação de clientes, tanto para intranet como para internet.

Problema

Com o uso popular da internet, a briga para carregar o site na tela o mais rápido possível a um custo baixo é prioridade, ou seja, mesmo que a conexão do usuário final seja lenta, o site deve aparecer em seu browser de uma forma rápida e eficaz. Nem todo usuário possui uma conexão banda larga em casa, com isso existe demora do carregamento do site ou sistema. Na demora excessiva da funcionalidade, a empresa poderá perder clientes e vendas, dependendo do estabelecimento.

Solução

O recurso no .NET chamado “cache” veio para tirar todo esse problema de lentidão no sistema ou site, para páginas que possuem os mesmos valores e não têm problemas para manter os dados em “cache”, não precisando ir ao banco de dados; essa solução é ideal e objetiva para o desenvolvedor. Pode melhorar consideravelmente toda página, principalmente as complicadas, que precisam ir ao banco de dados a todo o momento e mostrar ao usuário as informações do BD.

O “cache” pode ser feito de duas maneiras no ASP.NET:

  1. Com código dentro da página ASPX.CS ou ASPX.VB; ou
  2. Colocando uma tag no cabeçalho do arquivo ASPX.

Codificando

  • Primeira forma:

Ativando o “cache” em 10 segundos. (Referência c-1.1)

Note que criei um método chamado GetCache(). Ele não recebe nem envia valores e é protegido para aquela classe específica. Ele apenas pega o uso do “cache” no servidor, ou seja, se houver outro usuário no site ou sistema navegando, será detectado automaticamente e o sistema usará o mesmo “cache”, dados já exibidos para o próximo usuário que entrar, esse tempo é de 10 segundos. Com isso não precisará ir ao banco de dados.

Esses 10 segundos podem ser alterados para quantos segundos quiser. Geralmente não é bom colocar muito tempo, tente encontrar um tempo legal e ideal para seu sistema e site.

Depois de criar o método, basta apenas acrescentar dentro do método Load da página principal .ASPX. (Referência c-1.3)

protected void
GetCache()
 {
 //Uso do cache de saída do servidor
 Response.Cache.SetCacheability(HttpCacheability.Server);
 //Mostra que a página ficará ativa por 10 segundos
 //mantendo o cache
 Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));
 }

Note que criei um método chamado GetCache(). Ele não recebe nem envia valores e é protegido para aquela classe específica. Ele apenas pega o uso do “cache” no servidor, ou seja, se houver outro usuário no site ou sistema navegando, será detectado automaticamente e o sistema usará o mesmo “cache”, dados já exibidos para o próximo usuário que entrar, esse tempo é de 10 segundos. Com isso não precisará ir ao banco de dados.

Esses 10 segundos podem ser alterados para quantos segundos quiser. Geralmente não é bom colocar muito tempo, tente encontrar um tempo legal e ideal para seu sistema e site.

Depois de criar o método, basta apenas acrescentar dentro do método Load da página principal .ASPX. (Referência c-1.3)

protected void Page_Load(object sender, EventArgs e)
{
 GetCache();
 if (!Page.IsPostBack)
 {
 preencheDataList();
 }
 }

O método foi acrescentado junto ao método Page_Load da página, o que resolve muito o problema de lentidão e carregamento das informações.

* Segunda forma:

A outra maneira de ativar o “cache” da página, ou seja, “cache” de saída, é alterar o cabeçalho da página específica (Referência c-1.4).

 <%@ OutputCache Duration="10" VaryByParam="None" %>

Referência: c-1.4

Exemplo na página (Refência c-1.5):

c-1.5

Os atributos e valores OutPutCache Duration e VaryByParam devem estar especificados corretamente na página.

OutPutCache Duration: significa quanto tempo a página será armazenada, esse tempo é medido em segundos;

VaryByParam: significa que quando houver um parâmetro a ser passado do tipo “query string”, o mesmo pode ser colocado no atributo. Dessa forma será feito “cache” da página mesmo que haja parâmetros que recebam ou não. No meu caso, não precisarei de parâmetro, coloquei “none”.
Dúvida

Qual das duas formas usar? É preciso testar. Os dois tipos funcionam corretamente para a função e desempenho. A minha opinião e preferência é usar a primeira opção mostrada, não gosto de mexer muito na página .ASPX, gosto mesmo de codificar em ambiente “code behing”; mas a outra forma também funciona corretamente.

Espero ter ajudado de alguma forma.

via: imasters mauricio jr

assinatura_blog

Declarando variáveis (vb.net)

Olá galera,

Declarar variáveis em um app vb.net é super simples e fácil.

Leia com atenção a dica abaixo.

No tópicos anteriores estávamos falando sobre variáveis e para que está começando costuma questionar “como declaro uma variável em vb.net?”

A forma mais simples de usar/declarar/dimensionar uma variável em vb.net é usar a palavra chave Dim (cujo significado é dimension).

Em seguida informe digitando o nome de sua variável.

Na sequência digite AS e informe o tipo de variável. Veja o exemplo abaixo:

Dim valor As Integer

Estamos apresentando ao app uma nova variável chamada valor. Esta variável  irá ocupar 4 bytes de memória e que poderá tratar (entender) valores numéricos na entre : -2.147.483.648 até 2.147.483.647

variáveis – parte 2 (.NET)

Olá galera,

Vamos a dica de hoje sobre variáveis.

Podemos criar três tipos básicos de variáveis no VB.NET:

  1. Variáveis simples –  usadas para guardar valores simples como números e strings (alfanuméricas)

  2. Variáveis complexas – usadas para guardar valores mais complexos , vetores , e tipos definidos pelo usuário

  3. Variáveis objeto – usadas para guardar variáveis objeto

Nos próximos tópicos vamos detalhar mais sobre este assunto de variáveis.

See you!! 😉

:: LUCIANA COSTA ::

Variáveis globais em VB .NET

Olá pessoal,

Com a Pandemia do Influenza AH1N1 (famosa e popular gripe suína) à solta… boas novas por aqui. O Instituto Butantan  em SP será responsável pela produção da vacina contra a tal gripe aqui no Brasil segundo nosso ministro da Saúde, José Gomes Temporão.

Já vi várias pessoas (na região central de SP) usando máscaras de proteção.  Portanto, fique atento! Procure uma UBS (posto de saúde) mais próximo diante de qualquer sintoma semelhante a gripe! Com saúde não se brinca! 😉

“Simbora” ao tópico de hoje… vamos falar um pouco mais sobre plataforma NET, em específico, sobre variáveis globais.

Um dica fácil, clara e breve é que em VB .NET para você declarar uma variável  como global a todo um projeto é necessário que crie primeiramente  um módulo onde colocar tais variáveis.

Esse módulo se cria através do menu projeto -agregar um módulo.

Uma vez criado você somente tem que declarar sua variável. Visualize e interprete este simples exemplo:

Module Module1
Public nome_variavel As Integer
End Module

Desta forma a variável será vista por todos os formulários e poderá operar com ela em qualquer formulário a qualquer momento do projeto.

::LUCIANA COSTA::

VB.Net-> Express Edition (limitações)

Olá Pessoal, 

Tudo bem?

Bom… estamos com mais um post sobre a plataforma Net. Em específico as versões disponíveis pela Microsoft:  EXPRESS EDITON

A Microsoft disponibiliza em seu site as versões Express (que  são versões gratuitas). Sendo ela gratuita você perceberá que a ferramanta terá alguns recursos limitados (por exemplo no Visual Studio 2005/2008).

Pois bem… sempre comunico em sala de aula que SOU 110% CONTRA A PIRATARIA e não recomendo a compra de alternativos (por milhares e ilhares de motivos), no entanto, a Microsoft nos libera  as versões Express que atendem totalmente às necessidades dos programadores  deixando muito pouco a desejar em relação a versão completa do Visual Studio( se comprdo com o que está disponível).

🙂

Concordo que alguns dos recursos naõ estão disponíveis na versão Express, tais como:  ferramenta para criação de relatório como o Crystal Reports, solution folders, projetos de teste unitários…  

Outra diferença é que para cada linguagem existe uma ferramenta separada, assim como para web. Dessa forma, temos as seguintes ferramentas:

No site é possível fazer o download de uma imagem ISO com todas as ferramentas em um mesmo pacote (prepare tempo e banda- pois são quanse 3Gb se baixar tuuuuudo), para instalações offline.

-> Para seguir o link para Instalação Offline do Visual Studio Express Edition.

Também é necessário efetuar o registro de cada uma das ferramentas. A boa notícia é que o registro é gratuito.

😉

Agora cá entre nós tudo é negócio + lucro, imagine se uma empresa (seja ela qual for) ela produz softwares e lhe oferece um pacote full e gratuito… lhe pergunto: Qual motivo seria de sua existência? Qual a real razão de uma empresa existir? Se produz algo e espera-se naturalmente um retorno. 

🙂

:: LUCIANA COSTA ::

Parte3: Como usar pipes nomeados para comunicação entre processos no Visual Basic .NET ou no Visual Basic 2005

Criar um cliente de pipe nomeado

Para criar um cliente de pipe nomeado que se comunica com o servidor, execute as seguintes etapas:

  1. Chame a função CreateFile para criar um identificador para o pipe nomeado.
  2. Chame a função ReadFile ou WriteFile para se comunicar através do pipe.
  3. Chame a função CloseHandle no identificador criado na função CreateFile.

Também é possível usar uma transação de pipe nomeado para a comunicação cliente/servidor. A transação de pipe nomeado combina uma operação de escrita e uma operação de leitura em uma única operação de rede. Uma transação pode ser usada apenas em um pipe duplex do tipo mensagem. Os processos podem usar a função TransactNamedPipe ou a função CallNamedPipe para executar transações de pipe nomeado.

Neste exemplo de código, você usa a função CallNamedPipe para conectar ao servidor de pipe nomeado, escrever os dados no pipe e ler os dados no pipe.

Projetar um aplicativo do Windows que se comunica com o servidor de pipe nomeado

Para projetar um aplicativo do Visual Basic .NET ou do Visual Basic 2005 Windows usado para conectar ao servidor de pipe nomeado, execute as seguintes etapas:

  1. Inicie o Microsoft Visual Studio .NET ou o Microsoft Visual Studio 2005.
  2. No menu File, aponte para New e clique em Project.
  3. Em Project Types, clique em Visual Basic Projects e clique em Windows Application em Templates.

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types.

  4. Na caixa Name clique em MyClientApp e clique em OK. Por padrão, um formulário chamado Form1 é criado.
  5. Adicione um controle Button ao formulário Form1.
  6. Clique com o botão direito do mouse em Button1 e clique em Properties.
  7. Defina a propriedade Text como Connect to the server.
  8. Adicione um controle Label ao formulário Form1. O controle Label Label1 é adicionado ao formulário Form1.
  9. Defina a propriedade Visible do controle Label Label1 como False.
  10. Adicione dois controles TextBox ao formulário Form1.
  11. Escrever código para conectar ao servidor de pipe nomeado

    Conecte ao servidor de pipe nomeado usando a função CallNamedPipe. Depois de conectar ao servidor, a função CallNamedPipe escreve para o pipe, lê no pipe e fecha o pipe. Para conectar ao servidor, ler e escrever os dados, execute as seguintes etapas:

    1. Na exibição Design, clique duas vezes em Connect to the server e adicione o seguinte código ao procedimento Button1_Click:

      Dim i, res, cbRead,numBytes As Integer
      Dim bArray() As Byte
      Dim temp As String
      
      numBytes = CInt(TextBox1.Text)
      If numBytes < 0 Then
          MessageBox.Show("Value must be at least 0.", MsgBoxStyle.OKOnly)
          Exit Sub
      End If
      If numBytes = 0 Then
          Label1.Visible = True
          Label1.Text = "The connection to the server is disconnected."
          Button1.Visible = False
          TextBox1.Visible = False
          TextBox2.Visible = False
      End If
      If numBytes > BUFFSIZE Then
          numBytes = BUFFSIZE
      End If
      
      ReDim bArray(numBytes) 'Create the return buffer
      'Call the CallNamedPipe function to do the transactions
       res = CallNamedPipe(pipeName, numBytes, Len(numBytes), bArray(0), numBytes, cbRead, 30000) 
      'Wait up to 30 seconds for a response
      'Format the data received, and then display the data in the text box
      If res > 0 Then
          temp = Format(bArray(0), " 000")
          For i = 1 To cbRead - 1
             If (i Mod 16) = 0 Then temp = temp & vbCrLf
                temp = temp & " " & Format(bArray(i), "000")
          Next i
          TextBox2.Text = temp
      Else
      MessageBox.Show("Error number " & Err.LastDllError & _
      "while trying to call the CallNamedPipe function.", MsgBoxStyle.OKOnly)
      End If

    2. Adicione o seguinte código antes do procedimento Button1_Click:

      Private Const pipeName As String = "\\.\pipe\MyPipe" Private Const BUFFSIZE As Integer = 10000 Private hpipe As Integer      Public Const INVALID_HANDLE_VALUE As Short = -1 Public Declare Function CallNamedPipe Lib "kernel32" Alias "CallNamedPipeA" _ (ByVal lpNamedPipeName As String, _ ByRef lpInBuffer As Integer, _ ByVal nInBufferSize As Integer, _ ByRef lpOutBuffer As Byte, _ ByVal nOutBufferSize As Integer, _ ByRef lpBytesRead As Integer, ByVal nTimeOut As Integer) As Integer

    3. No menu Build, clique em Build Solution.
    4. Verificar se o código funciona

      Para verificar se o código funciona, execute as seguintes etapas:

      1. Para iniciar o aplicativo do servidor, clique em Start no menu Debug do projeto MyServerApp.
      2. No formulário Form1, clique em Create a named pipe e em Wait for the client connections. Agora, o aplicativo está bloqueado e aguardando o cliente conectar.
      3. Para iniciar o aplicativo cliente, clique em Start no menu Debug do projeto MyClientApp.
      4. No formulário Form1, digite 10 na caixa TextBox1 e clique em Connect to the server. É possível ver a matriz de byte recebida na caixa TextBox2.
      5. Para desconectar o aplicativo cliente do servidor, digite 0 na caixa TextBox1 no aplicativo cliente e clique em Connect to the server.
      6. Feche o aplicativo cliente.
      7. Para desconectar a extremidade do servidor do pipe nomeado e fechar o aplicativo do servidor, clique em Disconnect the server no formulário Form1 do aplicativo do servidor.

fonte: microsoft

:: LUCIANA COSTA::

Parte2: Como usar pipes nomeados para comunicação entre processos no Visual Basic .NET ou no Visual Basic 2005

Criar um servidor de pipe nomeado

Para criar um servidor de pipe nomeado e se comunicar com o cliente através do pipe, execute as seguintes etapas:

  1. Crie um pipe nomeado.
  2. Chame a função ConnectNamedPipe para bloquear o servidor até que um cliente se conecte.
  3. Chame a função ReadFile ou WriteFile para se comunicar através do pipe.
  4. Chame a função DisconnectNamedPipe quando o processo terminar de usar o pipe.
  5. Chame a função CloseHandle no pipe nomeado.

 

Projetar um aplicativo do Windows que cria um servidor de pipe nomeado

Para projetar um aplicativo do Windows que cria um servidor de pipe nomeado usando o Visual Basic .NET ou Visual Basic 2005, execute as seguintes etapas:

  1. Inicie o Microsoft Visual Studio .NET ou o Microsoft Visual Studio 2005.
  2. No menu File, aponte para New e clique em Project.
  3. Em Project Types, clique em Visual Basic Projects e clique em Windows Application em Templates.

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types.

  4. Na caixa Name, digite MyServerApp e clique em OK. Por padrão, um formulário chamado Form1 é criado.
  5. Adicione três controles Button ao formulário Form1.
  6. No menu View, clique em Properties Window.
  7. Defina a propriedade Text dos controles Button aos seguintes valores:
    Recolher esta tabelaExpandir esta tabela
    Name Text
    Button1 Crie um pipe nomeado
    Button2 Aguarde as conexões do cliente
    Button3 Desconecte o servidor
  8. Adicione um controle Label ao formulário Form1. O controle Label Label1 é adicionado ao formulário Form1.

Adicionar todas as declarações a um módulo no aplicativo do Windows

Para adicionar as declarações da função necessárias para implementar a comunicação entre processos usando o pipe nomeado, execute as seguintes etapas:

  1. No Solution Explorer, clique com o botão direito do mouse em MyServerApp, aponte para Add e clique em Add Module.
  2. Na caixa de diálogo Add New Item – MyServerApp, clique em Open.
  3. Adicione o seguinte código ao módulo Module1.vb:

    Public Const FILE_ATTRIBUTE_NORMAL As Short = &H80S
    Public Const FILE_FLAG_NO_BUFFERING As Integer = &H20000000
    Public Const FILE_FLAG_WRITE_THROUGH As Integer = &H80000000
    
    Public Const PIPE_ACCESS_DUPLEX As Short = &H3S
    Public Const PIPE_READMODE_MESSAGE As Short = &H2S
    Public Const PIPE_TYPE_MESSAGE As Short = &H4S
    Public Const PIPE_WAIT As Short = &H0S
    
    Public Const INVALID_HANDLE_VALUE As Short = -1
    
    Declare Function CreateNamedPipe Lib "kernel32" Alias "CreateNamedPipeA" _
    (ByVal lpName As String, ByVal dwOpenMode As Integer, _
    ByVal dwPipeMode As Integer, ByVal nMaxInstances As Integer, _
    ByVal nOutBufferSize As Integer, ByVal nInBufferSize As Integer, _
    ByVal nDefaultTimeOut As Integer, ByVal lpSecurityAttributes As IntPtr _
    ) As Integer
    
    Declare Function ConnectNamedPipe Lib "kernel32" _
        (ByVal hNamedPipe As Integer, ByVal lpOverlapped As Integer) As Integer
    
    Declare Function DisconnectNamedPipe Lib "kernel32" _
        (ByVal hNamedPipe As Integer) As Integer
    
    Declare Function WriteFile Lib "kernel32" _
    (ByVal hFile As Integer, ByRef lpBuffer() As Byte, _
    ByVal nNumberOfBytesToWrite As Integer, ByRef lpNumberOfBytesWritten As Integer, _
    ByVal lpOverlapped As Integer _
    ) As Integer
    
    Declare Function ReadFile Lib "kernel32" _
    (ByVal hFile As Integer, ByRef lpBuffer As Integer, _
    ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, _
    ByVal lpOverlapped As Integer _
    ) As Integer
    
    Declare Function FlushFileBuffers Lib "kernel32" _
        (ByVal hFile As Integer) As Integer
    
    Declare Function CloseHandle Lib "kernel32" _
        (ByVal hObject As Integer) As Integer

Escrever código para criar um servidor de pipe nomeado

Após a criação de um pipe nomeado, aguarde as conexões do cliente. Quando o cliente conecta ao servidor, leia ou escreva as dados através do pipe. Para fazer isto, execute as seguintes etapas:
  1. No Solution Explorer, clique com o botão direito do mouse em Form1 e clique em Open.
  2. Na exibição Design do formulário Form1, clique duas vezes em Create a named pipe e adicione o seguinte código ao procedimento Button1_Click:
    Dim openMode, pipeMode As Integer
    'Create the named pipe
    openMode = PIPE_ACCESS_DUPLEX Or FILE_FLAG_WRITE_THROUGH
    pipeMode = PIPE_WAIT Or PIPE_TYPE_MESSAGE Or PIPE_READMODE_MESSAGE
    hPipe = CreateNamedPipe(pipeName, openMode, pipeMode, 10, 10000, 2000, 10000, IntPtr.Zero)
    Label1.Text = "Created the named pipe and waiting for the clients."
    Button1.Visible = False
    Button2.Visible = True
    Button3.Visible = True

  3. Adicione o seguinte código antes do procedimento Button1_Click:

    Private Const pipeName As String = "\\.\pipe\MyPipe"
    Private Const BUFFSIZE As Short = 10000
    Private Buffer(BUFFSIZE) As Byte
    Private hPipe As Integer

  4. No Solution Explorer, clique duas vezes em Form1.vb.
  5. Na exibição Design do formulário Form1, clique duas vezes em Wait for the client connections e adicione o seguinte código ao procedimento Button2_Click:

    Dim byteCount, i, res, cbnCount As Integer
    For i = 0 To BUFFSIZE - 1 'Fill an array of numbers
       Buffer(i) = i Mod 256
    Next i
    'Wait for a connection, block until a client connects
    Label1.Text = "Waiting for client connections"
    Me.Refresh()
    Do
       res = ConnectNamedPipe(hPipe, 0)
       'Read the data sent by the client over the pipe
       cbnCount = 4
       res = ReadFile(hPipe, byteCount, Len(byteCount), cbnCount, 0)
       If byteCount > BUFFSIZE Then 'Client requested for byteCount bytes
           byteCount = BUFFSIZE 'but only send up to 20000 bytes
       End If
       'Write the number of bytes requested by the client 
       res = WriteFile(hPipe, Buffer, byteCount, cbnCount, 0)
       res = FlushFileBuffers(hPipe)
       'Disconnect the named pipe.
       res = DisconnectNamedPipe(hPipe)
       'Loop until the client makes no more requests for data. 
    Loop Until byteCount = 0
    Label1.Text = "Read or Write completed"
    Button2.Visible = False

  6. Na exibição Design, clique duas vezes em Form1 e adicione o seguinte código ao procedimento Form1_Load:

    Button2.Visible = False
    Button3.Visible = False

  7. No Solution Explorer, clique duas vezes em Form1.vb.
  8. Na exibição Design do formulário Form1, clique duas vezes em Disconnect the server e adicione o seguinte código ao procedimento Button3_Click:
    Dim res As Integer 'Close the pipe handle when the client makes no requests CloseHandle(hPipe) Label1.Text = "Disconnected the named pipe"
  9. No menu Build, clique em Build Solution.

Acompanhe a continuação da matéria no próximo post.

::LUCIANA COSTA ::

Parte1: Como usar pipes nomeados para comunicação entre processos no Visual Basic .NET ou no Visual Basic 2005

Esse artigo discute detalhadamente como usar pipes nomeados no Microsoft Visual Basic .NET ou no Microsoft Visual Basic 2005 para comunicação entre processos. Esse artigo inclui um exemplo de código que demonstra a comunicação cliente/servidor usando um pipe nomeado no Visual Basic .NET ou no Visual Basic 2005. O artigo descreve a comunicação entre processos criando um servidor de pipe nomeado e um cliente de pipe nomeado. A comunicação através do pipe é executada da seguinte maneira:
  • Crie um pipe nomeado.
  • Bloqueie o aplicativo do servidor usando a função ConnectNamedPipe até que um cliente se conecte.
  • Conecte ao servidor usando a função CallNamedPipe.
  • Chame a função ReadFile ou WriteFile para se comunicar através do pipe.
  • Chame a função DisconnectNamedPipe quando o processo terminar de usar o pipe.
  • Chame a função CloseHandle no pipe nomeado após o término da comunicação através do pipe.

Um pipe nomeado é um pipe unidirecional ou duplex para comunicação entre um servidor de pipe e um ou mais clientes de pipe. É possível usar pipes nomeados para fornecer comunicação entre processos no mesmo computador ou entre processos em diferentes computadores através de uma rede. O termo “servidor de pipe nomeado” refere-se a um processo que cria um pipe nomeado e o termo “cliente de pipe nomeado” refere-se a um processo que se conecta a uma instância de um pipe nomeado.

É possível usar o Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005 para criar aplicativos que se comunicam com outros processos usando pipes nomeados. Esse artigo contém um exemplo de código que usa um pipe nomeado para se comunicar entre dois aplicativos do Visual Basic .NET ou Visual Basic 2005 Windows.

Requisitos

Este artigo presume que você esteja familiarizado com os seguintes tópicos:

  • Aplicativos do Windows
  • Programação do Visual Basic .NET
  • Utilização de pipes

A seguinte lista descreve a infra-estrutura de rede, software, hardware e os service packs recomendados:

  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
  • Microsoft .NET Framework
fonte: microsoft

Veja mais no próximo post (parte 2).

:: LUCIANA COSTA ::

VB.Net Básico: Estruturas (FOR/NEXT)

Olá dando presseguimento as estruturas falaremos um pouco sobre a estrutura FOR:

Sintaxe:

FOR Variável_de_controle = Valor_Inicial to falor_Final
 Instruções
Next

 

As Estruturas de Repetição, são conhecidas normalmente por Loop (em portugues – laços) .

As ER´s permitem  que um mesmo  trecho do código seja  executado  várias vezes.

No caso da estrutura FOR (considerado o mais simples de todos)  apenas o utilizamos quando de antemão sabemos  o número de vezes  que o trecho do código  precisa ser executado.

Exemplo :

For i = 0 to 520

 

:: LUCIANA COSTA ::

VB.Net Básico: Estruturas (IF/THEN)

Olá,

Tudo bem? Aproveitando o horário (meio tarde) de almoço e como as coisas andam punk aqui na empresa… sabe como é fechamento de mês… um corre-corre danado! Parametrizações,  reuniões, fechamentos, relatórios (inúmeros!), gráficos e etc etc etc.

O mundo BUSINESS! Mas confesso que este ritmo é bacana !!!

🙂

Dentro desta brecha de tempo optei por colocar um assunto de VB.NET na qual faz parte do cotidiano de qualquier profissional da área de desenvolvimento de apps: a Estrutura IF/Then.

Inclusive coincide com duas turmas que estou ministrando no período. Portanto, turmas de programação… segue o reforço por aqui. Antena ligada!!!!!!!!!

🙂

Dentro do VB.NET BÁSICO falamos normalmente sobre as estruturas (laços). Vamos conhecer um pouco de cada uma delas:

IF/THEN

É utilizada para avaliar uma expressão lógica e com base no resultado obtido (verdadeiro ou falso) o programa deve executar ou não uma determinada ação.

 If <expressão> Then 
   <instrução> 
End If 
EXEMPLO 1 :
 If dblSaldoContaCC < 0 Then
MsgBox (“Não há saldo disponível na conta corrente”)
End If
EXEMPLO 2:
If dblSaldoContaCC < 0 Then    MsgBox (“Não há saldo disponível na conta corrente”) Else    dblSaldoContaCC = dblSaldoContaCC - dblValorDebitoCC End If
Por enquanto ficamos por aqui... espero tê-los apoiado de alguma forma.
:: LUCIANA COSTA::

Em algum fórum na net…

Olá Pessoal,

Aproveitando o breve intervalo da tarde… e passeando por alguns foruns que participo assiduamente… deparei com uma pergunta:

Então VB.NET ñ tem nada a ver pra desenvolvimento em Internet não ? .NET é apenas assim, um nome de uma nova versão ? mellow.gif

Opssssss!!! Não é nada disto! No próprio post um profissional respondeu (antes do meu post ) hehe

A Resposta:
Bom dia a todos.

Mas é claro que o VB.NET tem tudo a ver com desenvolvimento para internet. Inicialmente quando o Visual Basic foi lançado, era tão somente para aplicações desktops indo até a sua versão 6, e não era orientada a objetos, somente aplicações orientadas a Eventos, como disse o nosso amigo.

Com o uso frequente da Internet, a Microsoft adapta um linguagem de script que utiliza alguns códigos do VB para Internet, chamada de VBScript, linguagens estas que são incorporadas as Tags HTML, este conceito foi aprimorado para linguagem ASP (Active Server Pages), só que estas últimas linguagens não dispunha de Interface gráfica, tal qual o VB original dispunha, ou seja, voce arrastar componentes para dentro do Form e já ter todo o código pré-inicial definido, onde posteriormente programava-se os novos eventos e os novos recursos da sua aplicação, em suma, o VBScript, o ASP e o VB passaram a ser linguagens distintas.

O VB.Net, já incorpora um interface gráfica onde o código fonte pré-definido já o ASP com alguns códigos em HTML.

Já as novas versões a partir do Visual Studio 2005, dizem as más línguas, que já é totalmente orientada a objetos, tanto voltada para aplicações desktop, quanto para aplicações de Internet.

Porque voce disse que as más línguas ? Simples, porque eu não programo mais em VB desde 1999, onde programava na versão 6, e posteriormente em 2000 passei a programar em ASP, e depois passei para Delphi, e foi ai que abandonei o VB de vez. Motivo, o Delphi já era orientado o Objetos desde aquela época.

Viu como a Plataforma Net é ampla… e isto é só o começo!
Nos falamos por aqui.
See You!
onde? fórum imasters
:: LUCIANA COSTA ::

Visual Basic.Net – conceito

Não sou muito adepta da enciclopédia livre: wiki. Como para algumas regras existem as exceções, neste assunto (sobre o VB.Net) traduz de forma clara e verídica o conceito de Visual Basic.Net.

Para você que está acompanhando este blog a pouco tempo, olhe as categorias aí ao lado (esquerdo) e temos duas delas destinadas a tal assunto (categorias: Tudo.Bet e Vb.Net). Faça sua visita nestas “catigurias” e leias outros assuntos e dicas correlatos.

Visual Basic.NET é uma linguagem de programação totalmente orientada a objetos e com suporte total a UML, criada pela Microsoft e distribuída com o Visual Studio .NET (Versão seguinte ao Visual Basic 6.0), embora hoje já haja o Visual Basic 2008.

O Visual Basic.NET é um produto extremamente diferente do antigo Visual Basic 6.0, não podendo ser considerada uma versão seguinte. Não apenas a maneira de programar foi alterada, mas todo conceito de orientação a objetos trouxe poder para a linguagem. A Microsoft simplesmente descontinuou o antigo Visual Basic 6.0 tornando o produto parecido com as demais linguagens do Visual Studio, parecido em questões de recursos e portabilidade pois o Visual Basic.NET ainda é muito diferentes de liguagens como o Visual C++, C#, etc. Porém esta nova versão aproximou o Visual Basic.NET das grandes linguagens de programação, aumentando a aceitação dos programadores Java e até mesmo C++, embora programadores Java caso tenham que migrar para plataforma Microsoft preferem o C#. Apesar da linguagem ser parecida com o antigo Visual Basic 6.0 a migração destes programadores para a nova plataforma e utilização do Visual Basic.NET é mais fácil para programadores que utilizam linguagens orientada a objeto por causa da grande diferença. Os programadores do antigo Visual Basic 6.0 acostumados com a orientação a eventos encontram dificuldades para utilizar o Visual Basic.NET.

Bom… caso você tenha algum cometário ou dúvida deixe seu post por aqui (logo abaixo deste artigo).

Abraços

::LUCIANA COSTA::

Dica: VB.Net (Básico)

Olá Pessoal,

Neste breve post  estarei comentando sobre os 4 elementos fundamentais da OOP (programação orientada a objetos).

Uma das ferramentas que trabalho é justamente o Visual Studio 2005/2008 da Microsoft (poderosa ferramenta!)  e quando o assunto é OOP, vale apnea lembrar de tais elementos. Mesmo porque é comum profissionais e alunos perguntarem a diferença ou relação entre objeto, método, propriedades e eventos.

A tempo, informo que, esta pergunta chegou esta semana (por e-mail de um leitor que nos acompanha por aqui), e embora pareça ser um assunto básico/simples para um resposta, sempre chego à plena conclusão que uma resposta objetiva, simples não passaria seu real conceito e deixaria muito a desejar, pois o que está nas entrelinhas da pergunta é um tanto complexo que apenas definir o sentido de cada termo. Com este raciocínio me fez analisar (compor) a seguinte pergunta:

“Qual a relação que existe entre objeto, eventos, métodos e propriedades dentro do mundo gerenciado na plataforma. NET?”

As respostas para ambas são essencialmente a mesma, porem com a segunda terei a oportunidade de explorar mais algumas características que devem ser fixadas para os desenvolvedores que desejam se aprofundar na plataforma. NET.

Antes de responder a pergunta vamos ao contexto que ela deve ser respondida:

Os sistemas inicialmente estavam voltados para aplicações desktop, mono tarefas com ou sem interfaces gráficas. Foram evoluindo para suporte a cliente/servidor, aplicações distribuídas e internet. Esta evolução veio da necessidade por parte do cliente de ter mais informações e cada vez mais complexa. Os modelos utilizados até então se baseavam em APIs do windows que se mostravam cada vez mais inadequadas a medida que as complexidades aumentavam. Juntou-se a este contexto uma diversidade maior de devices Ex : Palms (computadores de mão), Celulares (smartphones), tables, etc.

Para atender a esta demanda não bastava uma nova versão de linguagem mas toda uma nova plataforma de desenvolvimento, toda uma nova organização das chamadas ao sistema operacional buscando uma aderência maior com uma forma de programação que absorvesse estas complexidades. A resposta por parte da Microsoft a esta necessidade foi o Framework.NET que tem como base a orientação a objetos que incorporou diversos serviços que antes fornecidos pelas linguagens. Para dar suporte a este novo modelo que passou a ser chamado de ambiente gerenciado foi criado o CRL (Commom Language Runtime) que tem como objetivo simplificar o processo de implementação de objetos para qualquer tipo de linguagem desta plataforma. Para atender a esta característica (atender a várias linguagens de forma unificada) a base dos tipos de dados do framework foi modelada totalmente orientada a objetos para que diferentes linguagens possam se falar e fazer uso da uma única biblioteca de tipos a CTS (Commom Type System).

Dentro deste contexto vamos a resposta:

Objeto: É o menor elemento de abstração que temos dentro do ambiente gerenciado .NET, sendo qualquer tipo de dados derivado deste item, ou seja , tudo é objeto. A medida que especializamos um objeto ele adquire mais características possuindo mais detalhes, a estes conjuntos de características damos os nome de: eventos, métodos e propriedades, que fundamentalmente são a forma que um objeto irá interagir e se comportar. A este conjunto de comportamentos e interação damos o nome de classe.

Métodos: Para que um objeto possa interagir deve possuir meios para que possa descrever como uma determinada operação ou característica deve ou possa ser executada (Ex: ler, gravar…), se vai ou não receber parâmetros, se retorna algum valor ou não, etc. A esta característica dar-se o nome de método de um objeto.

Propriedades: É na realidade um método especializado (descreve uma característica de um objeto). A principal diferença para um método é que em uma propriedade os valores e possíveis retornos estão disponíveis de forma direta, ou seja, podem receber ou enviar seu conteúdo com atribuições de igualdade de forma direta (claro quando é definido desta forma, pois podemos ter propriedades só de leitura e só de gravação).

Eventos: Também em sua essência é um método especializado (descreve uma ação que será disparada de acordo com alguma regra que seja atendida) Exemplo de uma especificação fictícia: “a cada ação de execução de um método “Gravar” deve-se dispara um evento de nome “AlteracaoDeDados” que terá como parâmetro o numero de registro que foram alterados. Ou seja evento é um método que tem como característica principal notificar alguma ação a um meio externo ao objeto.

Pois é! O conceitos da Plataforma Net não param por aqui! A coisa é bem maior do que aparentemente apresenta.  Teremos mais dicas como esta sobre o UNIVERSO .NET.

onde: linhadecódigo

Até o próximo post.

See you!

:: LUCIANA COSTA ::

 

Finalização inesperada do Visual Studio 2003

Olá…

Tudo bem?

Hoje foi dia de elogios quanto ao cenário profissional… e fico EXTREMAMENTE grata pelo reconhecimento e confiança em meu trabaho e experiência.

Vamos ao tema deste post:

Não somente um problema que acontecia comigo… mas com muitos. Vale a pena comartilhar tal texto com vocês… que assim como eu são fascinados pelo universo .Net.

1. Introdução

Nos últimos dias enfrentei um problema que me deixou um tanto quanto surpreso: a finalização inesperada do Visual Studio 2003. Foram vários dias de testes, pesquisas e muita “dor de cabeça”, até que a solução fosse encontrada. Neste artigo mostrarei a solução utilizada para resolver o problema.

2. Descrevendo o problema

A finalização inesperada do Visual Studio 2003 ocorria no ato da compilação / execução de uma determinada solução em um ambiente controlado onde o ambiente de desenvolvimento não estava atualizado com os pacotes disponibilizados pela Microsoft.

O ambiente apresentava o seguinte cenário:

Microsoft Windows XP

  • Professional v2002
  • Service Pack 2

Microsoft Visual Studio .NET 2003

  • Microsoft Development Environment 2003 v7.1.6030
  • Microsoft .NET Framework 1.1 v1.1.4322
  • Microsoft Visual Studio .NET 2003 Service Pack 1

Microsoft Enterprise Library January 2005

O problema relatado anteriormente ocorria varias vezes ao dia e gerava os seguintes arquivos de log:

img1

Este arquivo de log aponta um erro ao Enterprise Libray Instrumentation.

img2

Já este arquivo de log aponta um erro ao Microsoft Development Environment mencionando o arquivo csproj.dll.

3. Descrevendo a solução

Quanto ao erro do Enterprise Libray Instrumentation, encontrei no site Channel9 Wiki (http://channel9.msdn.com/wiki/default.aspx/Channel9.EnterpriseLibraryFAQ) algumas soluções interessantes que repliquei no meu ambiente de desenvolvimento.

Agora, para resolver o erro do Microsoft Development Environment, o primeiro passo é atualizar o Windows, o Visual Studio e o .NET Framework através do site Windows Update (http://windowsupdate.microsoft.com), para que seu ambiente de desenvolvimento esteja atualizado com os últimos pacotes da Microsoft.

Após atualizar o ambiente de desenvolvimento, substitua o arquivo csproj.dll, localizado no diretório [b]C:/Arquivos de

programas/Microsoft Visual Studio .NET 2003/Vc7/vcpackages[/b], pelo arquivo csproj.dll do CD do Visual Studio 2003.

O último passo é registrar o novo arquivo csproj.dll no Windows. Para tal feito basta abrir o Prompt de comando e executar o seguinte comando: regsvr32 "C:\Arquivos de programas\Microsoft Visual Studio .NET 2003\vc7\vcpackages\csproj.dll".

É importante enfatizar que ao final do processo, a ferramenta “Desfragmentação” do Windows foi utilizada no ambiente de desenvolvimento.

4. Finalizando

Neste artigo abordamos o que pode ser feito em relação ao problema de finalização inesperada do Visual Studio 2003.

No meu ambiente de desenvolvimento o problema foi corrigido, espero que no seu aconteça o mesmo!

Fonte: Imasters/Diego Ggazotto

:: LUCIANA COSTA ::

VB.Net – Basicão

Segue a dica super-básica de VB.Net para que usa o VS ou o próprio VB. Esta é para quem tem pouquíssima experiência com tais ferramentas.

Para rodar o formulário:

  • Na Barra de Menu – click Debug
  • No Menu Drop Down – click Start
  • Uma outra alternativa é pressionar  a tecla de função F5 

Simples, não?!

 – – – – – – – – – – – – – – – – –

Segue uma outra dica – ToolBox:

A ToolBox, que nos permite criar interfaces dos nossos formulários, adicionando controles para então programá-los.

A ToolBox contém várias divisões como você poder ver na figura abaixo, contendo em cada uma delas vários controles com diversos propósitos/funções.

toolbox1

Para expandir  basta clicar no sinal +.

Inicialmente uma das mais utilizadas é a Common Controls, nela estão contidas a TextBox, Label, Button entre outros que você pode ver abaixo:

commoncontrol

Até o próximo post.

Obrigada.

:: LUCIANA COSTA ::

VB – Teste de arquivo em branco

Olá,

O assunto de hoje aborda um conceito muito utilizado dentro da programação (qualquer linguagem) -> Estrutura IF.

Como nosso assunto por aqui é VB , neste exemplo, foi aplicado o teste a fim (“com o propósito de“, portanto, separado 😉 ) de verificar se o arquivo está em branco ou não. É uma boa metodologia (e óbvia) é o uso do IF neste caso para validar sim/não.

IF FileLen(“informe o nome do arquivo”) = 0  THEN
      O arquivo está em branco
ELSE
      O arquivo tem conteúdo
END IF

Claro que podemos complementar com mais linhas de códigos, mas a idéia inicial é a Estrutura IF (por enquanto!).

 Até o próximo post.

:: LUCIANA COSTA ::

PHP, Ruby, Python e outras linguagens no .NET?

Surpreso?

Após o sucesso do PHP, do Ruby, principalmente com a plataforma Rails,e do crescimento exponencial de Python, a Microsoft investe para disponibilizar estas novas linguagens também na plataforma .NET. Com a filosofia “desenvolva em qualquer linguagem, desde que seja na minha plataforma”, a Microsoft vem ganhando cada vez mais adeptos, e gerando cada vez mais recursos para facilitar e fidelizar (ou evangelizar, como a MS gosta de falar) o desenvolvedor.

Linguagens dinâmicas

As linguagens dinâmicas existem desde 1956, com o Lisp, depois seguidas pelo Fortran, Logo, SmallTalk, PhP, Python, Ruby, JavaScript, entre outras. Diferente das linguagens estáticas, as linguagens dinâmicas não validam o código durante a compilação, mas sim em tempo de execução, podendo ser uma grande vantagem quando é necessário fazer alterações sem muita “burocracia”.

Em projetos que se requer agilidade, o uso deste tipo de linguagem é de grande valia, pois permite realizar basicamente o que você quiser, com pouco código, porém como tudo na vida há um preço a se pagar, por exemplo: é mais difícil se aproveitar um código dinâmico do que um código “estático”.

Performance

Umas das grandes preocupações de linguagens dinâmicas é a performance da aplicação. Em testes, a versão do Python para o .NET, o IronPython apresentou performance equivalente ou superior à versão do Python baseada em C. Existe uma crença de que linguagens dinâmicas possuem uma performance inferior às linguagens estáticas, porém com as máquinas cada vez mais poderosas, esta diferença fica cada vez menos observável.

DLR

O DLR (Dynamic Language Runtime) permite rodar linguagens dinâmicas em cima do CLR (Common Language Runtime), que provê serviços comuns a todas as linguagens suportadas pelo framework. O DLR inclui funcionalidades que suportam linguagens dinâmicas, como a criação de códigos dinâmicos de forma rápida, além de prover suporte para as bibliotecas já existentes no framework .NET e manter uma interoperabilidade com as linguagens estáticas. É possível, por exemplo, utilizar bibliotecas criadas em C#, dando um poder imenso de criação, não precisando assim, recriar códigos prontos.

Atualmente a MS está desenvolvendo o suporte para DLR as linguagens Python, JavaScript (EcmaScript 3.0), Visual Basic e Ruby.

Mono

O mais famoso software para rodar e desenvolver .NET no Linux possuí suporte para o rodar linguagens dinâmicas no .NET (DLR), dando ainda mais flexibilidade.

http://www.mono-project.com/Languages

Ruby

Para manter a praticidade, a linguagem possui algumas características interessantes, na Wikipedia (2008) encontramos as seguintes informações à esse respeito:

  • A sintaxe é enxuta, quase não havendo necessidade de colchetes e outros caracteres.
  • Todas as variáveis são objetos, onde até os “tipos primitivos” (tais como inteiro, real, entre outros) são classes.
  • Estão disponíveis diversos métodos de geração de código em tempo real, como os “attribute accessors”.
  • Através do Ruby Gems, é possível instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux.
  • Code blocks (blocos de código), ajudam o programador a passar um trecho de instruções para um método. A idéia é semelhante aos “callbacks” do Java, mas de uma forma extremamente simples e bem implementada.
  • Mixins, uma forma de emular a herança múltipla, sem cair nos seus problemas.
  • Tipagem dinâmica, mas forte. Isso significa que todas as variáveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente. Os “atalhos” citados acima, por exemplo, se beneficiam da tipagem dinâmica para criar os métodos de acesso/alteração das propriedades.

Fonte: http://pt.wikipedia.org/wiki/Ruby_(linguagem_de_programa%C3%A7%C3%A3o)

Iron Python

Possui características análogas ao Ruby. Permite suporte ao Silverlight, para testar, existe um console. (http://silverlight.net/Samples/1.1/DLR-Console/python/index.htm)

O Site do projeto oficial é: http://codeplex.com/IronPython

Phalanger (PHP)

O site oficial do projeto é: http://www.codeplex.com/Wiki/View.aspx?ProjectName=Phalanger

Linguagens suportadas pela plataforma .NET

Existem uma série de linguagens suportadas pela plataforma .net. Algumas ainda em estado embrionário e não oficial enquanto outras já com apoio oficial da MS. No link abaixo, segue uma lista.

Acesse: http://dotnetpowered.com/languages.aspx

Considerações finais.

Em desenvolvimento, não está importando muito a linguagem que utilizamos. O que importa é com que rapidez e qualidade com que entregamos um projeto. É sempre importante conhecermos novas linguagens, e para isto, certamente a plataforma .NET dará todo apoio necessário.

bibliografia: Semple/imasters

Luciana Costa