« Voltar
em .net c# wpf windows forms chromium dotnetbrowser

Criando aplicações WPF e Windows Forms com HTML, CSS e Javascript.

Quando ouvi falar do Electron, achei bem interessante a ideia de criar aplicações desktop com as tecnologias da web: HTML, CSS e Javascript.

Projetos como Slack, Visual Studio Code e o sensacional GitKraken foram concebidos através desta tecnologia.

Apesar de achar bem interessante, na época eu ainda era um desenvolvedor monolítico que não ia muito além do código backend. Sair da stack .NET não estava nos meus planos nessa época(mas eu mudei hein!).

Seria legal, eu pensei
Se tivesse algo parecido com isso mas que eu não tivesse que mexer com Javascript. Se pudesse fazer isso, mas com C# dentro do Visual Studio em uma aplicação Windows Forms.

Como não tinha isso em 2013, desencanei.

3 anos depois...

Já faz um tempo que lá na Alura nós usamos o Slack pra comunicação interna. E é simplesmente sensacional, vários problemas de comunicação que nós tinhamos foram resolvidos depois que adotamos ele.

E aí, lembrei que o Slack é feito com Electron e me questionei se 3 anos depois já havia algo parecido com o Electron, mas para .NET.

E tem!

Conheci o DotNetBrowser

Dei uma pesquisada e acabei chegando no site de uma empresa ucraniana chamada TeamDev, quem tem vários produtos interessantes, entre eles o DotNetBrowser.

O DotNetBrowser basicamente nos permite desenvolver aplicações destkop(Windows Forms ou WPF) com o trio da web: HTML, CSS e Javascript. E até Flash.

Sim, Flash.

Como o DotNetBrowser funciona

Basicamente, quando você instala o DotNetBrowser em seu projeto, ele permite que você crie instâncias de um navegador dentro de um formulário, por exemplo. Na verdade você não pode só criar um, pode criar vários.

Mas como assim instanciar um navegador, Gabriel? Tipo new Navegador()?

Sim, tipo isso.
A ferramenta usa o Chromium, que é a engine open source que renderiza as páginas do Chrome. Ou seja: o conteúdo que você carregar nele será exatamente igual se você carregar no Chrome.
Isso passa certa segurança, certo?

Vamos testar

A ferramenta é paga, mas felizmente dá pra avaliar por 30 dias e ver o que acha.

O processo é rápido e fácil :)

Baixe a library

Entre aqui e clique em Download.

Depois de baixar o arquivo, extraia ele em algum lugar(que você vá lembrar daqui 30 segundos).

Baixe a licença

Em seguida, entre aqui e preencha esse formulário.

Não é formulário chatão não tá? Tem que preencher só 4 campos.

Depois de preencher você vai baixar um arquivo chamado teamdev.licenses, salve ele em algum lugar(que você vá lembrar daqui 15 segundos).

Crie uma aplicação

Abra o Visual Studio e crie uma aplicação Windows Forms:

Adicione a DLL

No Solution Explorer, clique com o botão direito em References e selecione Add Reference:

Na janela que abrir, clique em Browse:

Vá até onde você salvou o DotNetBrowser e dentro da pasta Library, selecione o arquivo DotNetBrowser.dll:

Clique em OK:

Adicione a licença

No Solution Explorer, botão direito no projeto em clique em Add, depois Existing Item:

Vá até onde você salvou o arquivo teamdev.licences e selecione ele:

Depois, no Solution Explorer, botão direito no arquivo e selecione Properties:
Em properties, é só trocar o Build Action pra Embedded Resource:

Ok, vamos colocar um navegador nesse formulário!

O código pra criar uma instância de um navegador é extremamente simples.

No arquivo Form1.cs, dentro do construtor, primeiro crio um objeto do tipo Browser invocando um Factory Method chamado Create:

public Form1()  
{
    InitializeComponent();

    Browser browser = BrowserFactory.Create();
}

Depois, criamos uma instância de WinFormsBrowserView, passando como parâmetro o browser que criamos e adicionamos ele no formulário:

public Form1()  
{
    InitializeComponent();

    Browser browser = BrowserFactory.Create();
    WinFormsBrowserView browserView = new WinFormsBrowserView(browser);
    Controls.Add(browserView);
}

E vamos carregar algo nesse navegador usando o método LoadURL:

public Form1()  
{
    InitializeComponent();

    Browser browser = BrowserFactory.Create();
    WinFormsBrowserView browserView = new WinFormsBrowserView(browser);
    Controls.Add(browserView);
    browser.LoadURL("http://www.gabsferreira.com");
}

Aperte F5 pra rodar e:

Pronto, temos um navegador! :)

É muito bacana!

Pense nas possibilidades que você pode ter conseguindo renderizar HTML, CSS e JS dentro de suas aplicações.

A API dos caras é bem bacana e dá pra fazer bastante coisa. Além de ter uma documentação legal em português!

Curtiu?

E aí, o que achou? Gostaria de ver eu desenvolvendo(ou tentando) algo com essa ferramenta? Tem alguma dúvida?

Deixe seu comentário! :)

comments powered by Disqus