2017-10-10 6 views
0

Je suis assez bonne googler mais j'ai frappé un barrage routier cette fois. J'ai créé une application C# WinForm qui ouvre la fenêtre de connexion de l'application ICBusinessManager. Ce que je n'arrive pas à comprendre, c'est comment faire pour que ma winform se connecte automatiquement. La fenêtre de connexion de l'application IC comporte un bouton «Connexion» et un bouton «Annuler». Je suis relativement nouveau au développement (actuellement autodidacte) et je m'excuse d'avance si je ne suis pas clair. S'il vous plaît demandez si vous avez besoin de moi pour être plus précis.Comment se connecter automatiquement à une application de bureau à partir d'une application C# WinForm?

private void roboDialerBtn_Click(object sender, EventArgs e) 
{ 

      Process roboDialer = new Process(); 
      roboDialer.StartInfo.FileName = "ICBusinessManager.exe"; 
      roboDialer.StartInfo.Arguments = "ProcessStart.cs"; 
      roboDialer.Start(); 

     } 
+0

beaucoup trop large pour être répondu. Jetez un oeil ici: https://stackoverflow.com/questions/517694/ui-automation-selected-text – rene

+0

Votre meilleur pari est d'utiliser des outils automatisés pour mettre le nom d'utilisateur et mot de passe et cliquez sur Se connecter après le démarrage du processus. Il n'y a aucun moyen de le faire avec juste un «processus». J'ai eu du succès en utilisant QAliber (un cadre d'automatisation) pour faire exactement ce genre de chose. Pour être honnête, ce n'est pas simple à utiliser. –

Répondre

0

Vous pouvez vous connecter avec SendKeys. Essayez quelque chose comme ceci en utilisant n'importe quelle combinaison de \t et {enter} vous devez tabuler à partir de chaque option d'entrée donnant le focus de contrôle (et donc permettant de taper). Cela ouvre le bloc-notes, attend un peu pour l'ouverture du bloc-notes, puis tape "nom d'utilisateur", un caractère de tabulation, "mot de passe", un caractère de tabulation, puis entrez.

var info = new ProcessStartInfo() { FileName = "Notepad.exe" }; 
new Process() { StartInfo = info }.Start(); 
System.Threading.Thread.Sleep(500); 
System.Windows.Forms.SendKeys.SendWait("username\tpassword\t{enter}"); 

Vous pourrez peut-être utiliser Process.WaitForInputIdle(int) au lieu de Thread.Sleep(int) en fonction de l'application que vous commencez.