C# -  Chamando uma App Windows Forms do Console


Hoje temos uma dica de como chamar uma aplicação Windows Forms a partir de  uma aplicação console e passar parâmetros.

Podemos chamar uma aplicação Windows Forms a partir do Console e passar parâmetros para a aplicação Windows Forms.

Vamos criar uma aplicação Windows Forms com o .NET Framework usando o Visual Studio 2019 Community chamada WF_Parametros.


No formulário padrão Form1.cs vamos incluir a partir da ToolBox os seguintes controles:

  1. 2 Labels
  2. 1 TextBox - txtUsuario
  3. 1 MaskedTextBox - mskSenha
  4. 1 Button - btnLogin

Disponha os controles no formulário conforme a figura abaixo:

Vamos chamar esse formulário e passar os valores do nome do usuário e da senha.

Agora no construtor do formulário inclua o código a seguir:

using System;
using System.Windows.Forms;
namespace WF_Parametros
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            var data = Environment.GetCommandLineArgs();
            if (data.Length == 3)
            {
                txtUsuario.Text = data[1];
                mskSenha.Text = data[2];
            }
        }
    }
}

No construtor do formulário estamos usando o comando Environment.GetCommandLineArgs() que retorna uma array de strings que contém os argumentos de linha de comando para o processo atual.

O primeiro elemento é o nome do arquivo executável e os seguintes elementos contêm os argumentos de linha de comando restantes.

A seguir verificamos se o número de argumentos é igual a 3 pois estamos esperando dois argumentos: o nome e a senha do usuário.

Criando o projeto Console na mesma solução

Vamos incluir na solução criada um projeto do tipo Console chamado ConsoleApp_WF:

A seguir inclua o código abaixo na classe Program.cs:

using System.Diagnostics;
using System.IO;
using System.Reflection;
namespace ConsoleApp_WF
{
    class Program
    {
        static void Main(string[] args)
        {
            string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string appWindowsForms = dir.Replace("ConsoleApp_WF", "WF_Parametros") + "\\WF_Parametros.exe";
            Process pro = new Process();
            pro.StartInfo.FileName = appWindowsForms;
            pro.StartInfo.Arguments = "Macoratti Numsey@2019";
            pro.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            pro.Start();
            pro.WaitForExit();
        }
    }
}

No código acima estamos obtendo o caminho de execução do projeto atual e substituindo o nome pelo nome do projeto Windows Forms : WF_Parametros e acrescentando o nome do executável : WF_Parametros.exe

A seguir usamos uma instância da classe Process que fornece acesso a processos locais e remotos e permite que você inicie e pare os processos do sistema local.

Depois estamos passando o nome e caminho do executável e passando os parâmetros : Macoratti e Numsey@2019.

O método Start() da classe Process Inicia (ou reutiliza) o recurso do processo que é especificado pela propriedade StartInfo desse componente Process e o associa ao componente.

O método WaitForExit instrui o componente Process a esperar indefinidamente que o processo associado seja encerrado.

Executando o projeto teremos:

Pegue o código do projeto aqui : WF_Parametros.zip

"Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo, o Pai das misericórdias e o Deus de toda a consolação;
Que nos consola em toda a nossa tribulação, para que também possamos consolar os que estiverem em alguma tribulação, com a consolação com que nós mesmos somos consolados por Deus."
2 Coríntios 1:3,4

Referências:


José Carlos Macoratti