Is there any way to populate a web form through C #?
I have a system developed in WPF and when the user clicks a button open a certain page in the browser and that their fields are filled automatically with the system information.
I was able to solve this:
WPF:
<Window x:Class="PreencherFormularioWeb.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<WebBrowser Name="webBrowerNavegacao" LoadCompleted="webBrowerNavegacao_LoadCompleted"/>
</Grid>
C #:
//Necessario adicionar referencia no projeto.
using mshtml;
namespace PreencherFormularioWeb
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//Adiciona o caminho URL para abrir a pagina dentro do controle webBroser
webBrowerNavegacao.Navigate(new Uri("https://accounts.google.com"));
}
//Variavel usada para entrar no evento somente a primeira vez.
//Se não ele entra no evento novamente quando ocorre um post.
bool JaEntreiNoEvento = false;
//Entra no evento quando o webBroser conclui o carregamento da pagina
private void webBrowerNavegacao_LoadCompleted(object sender, NavigationEventArgs e)
{
if (JaEntreiNoEvento == false)
{
//Recupera o document do webBrowser1, faz o cast para mshtml.HTMLDocument para ter acesso aos elementos da pagina
mshtml.HTMLDocument htmldoc;
htmldoc = webBrowerNavegacao.Document as mshtml.HTMLDocument;
//Recupera o elemento pelo id e adiciona a string.
htmldoc.getElementById("Email").innerText = "Teste";
htmldoc.getElementById("Passwd").innerText = "123";
//Recupera o botão e aciona.
htmldoc.getElementById("signIn").click();
JaEntreiNoEvento = true;
}
}
}
}