C#  -  Realizando operações do Windows


 Neste artigo vou mostrar uma aplicação Windows Forms que realiza algumas operações do Windows usando o namespace System.Diagnostics e o método Process.Start.

O namespace System.Diagnostics contêm tipos que permitem interagir com processos do sistema, logs de eventos e medidores de desempenho.

Os namespaces filhos contêm tipos para interagir com ferramentas de análise de código, oferecer suporte a contratos, estender o suporte em tempo de design para a instrumentação e monitoramento de aplicativos, registrar dados de eventos usando o subsistema de Rastreamento de Eventos para Windows (ETW), ler e gravar logs de evento, coletar dados de desempenho e ler e gravar informações de símbolos de depuração.

O método Process.Start inicia um recurso de processo e o associa um componente Process que fornece acesso a processos locais e remotos e permite que você inicie e pare os processos do sistema local.

Pois vamos usar esses recursos em uma aplicação Windows Forms para realizar operações no Windows.

Recursos Usados

Criando o projeto Windows Forms

Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem C# e o template Windows Forms App (.NET Framework).

Informe um nome a seu gosto. Eu vou usar o nome OperacoesWindows;

No formulário Form1 do projeto vamos usar basicamente os controles : Label, TextBox, GroupBox, Button e ListBox.

Disponha os controles conforme o leiaute da figura abaixo:

A seguir inclua no formulário os seguintes namespaces:

using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;


A seguir temos o código completo do formulário Form1.cs :

public partial class Form1 : Form
    {
        enum RecycleFlags : uint
        {
            SHERB_NOCONFIRMATION = 0x00000001,
            SHERB_NOPROGRESSUI = 0x00000001,
            SHERB_NOSOUND = 0x00000004
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            label2.Text = "Nome do Computador : " + Environment.MachineName;
        }
        [DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
        static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,RecycleFlags dwFlags);
        private void btnDesligar_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("ShutDown", "/s");
        }
        private void btnReiniciar_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
        private void btnDesligarWindows_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("ShutDown", "/l");
        }
        [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
        protected static extern int mciSendString(string lpstrCommand,StringBuilder lpstrReturnString,
int uReturnLength,IntPtr hwndCallback);
        private void btnLimparLixeira_Click(object sender, EventArgs e)
        {
            uint result = SHEmptyRecycleBin(IntPtr.Zero, null, 0);
        }
        private void btnEjetarCDRom_Click(object sender, EventArgs e)
        {
            int ret = mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
        }
        private void btnFecharCdRoom_Click(object sender, EventArgs e)
        {
            int ret = mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
        }
        private void btnPararInternet_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("rasdial", "/disconnect");
        }
        private void btnAbrirNavegador_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("iexplore.exe", textBox1.Text.Trim () );
        }
        private void btnListaImpressoras_Click(object sender, EventArgs e)
        {
            GetImpressorasInstaladas();
        }
        private void GetImpressorasInstaladas()
        {
            foreach (string nomeImpressora in PrinterSettings.InstalledPrinters)
                lbImpressoras.Items.Add(nomeImpressora);
        }
        private void btnPaginaInicial_Click(object sender, EventArgs e)
        {
            RegistryKey user = Registry.CurrentUser;
            RegistryKey change = user.OpenSubKey("Software", true).OpenSubKey("Microsoft", true)
                      .OpenSubKey("Internet Explorer", true).OpenSubKey("Main", true);

            change.SetValue("Start Page", textBox2.Text.ToString () );         
            MessageBox.Show("Sua Home Page : " + textBox2.Text); 
        }
        private void btnEncerrar_Click(object sender, EventArgs e)
        {
            DialogResult Result = MessageBox.Show("Deseja sair ?", "Sair", MessageBoxButtons.YesNo);
            if (Result == DialogResult.Yes)
                this.Close();
        }
        private void btnExecutarComandos_Click(object sender, EventArgs e)
        {
            AbrirJanelaComandos();
        }
        private static void AbrirJanelaComandos()
        {
            // Define uma instancia da classe ProcessStartInfo
            ProcessStartInfo pro = new ProcessStartInfo();
            //Define o FileName a ser iniciado 
            pro.FileName = "cmd.exe";
            Process proStart = new Process();
            // Define o nome do Processo 
            proStart.StartInfo = pro;
            // Chama o método Start da clase Process
            proStart.Start();
        }
    }

Simples e funcional...

Pegue o projeto completo aqui :  OperacoesWindows.zip

"Com o ouvir dos meus ouvidos ouvi, mas agora te vêem os meus olhos.
Por isso me abomino e me arrependo no pó e na cinza. "

Jó 42:5,6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti