Tester une valeur

Signaler
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
-
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
-
Bonjour,





J'ai un fichier texte avec a chaque ligne du texte. A partir de mon
application, je lance notepad puis je recopie les valeurs dans ce
nouveau fichier !!






Code:, ----
private void button4_Click(object sender, System.EventArgs e)

{

System.Diagnostics.Process.Start("notepad.exe");

int counter = 0;

string line;

System.IO.StreamReader file =

new System.IO.StreamReader(di);

while((line = file.ReadLine()) != null)

{

System.Windows.Forms.SendKeys.SendWait(line);

System.Threading.Thread.Sleep(1000);

counter++;

}

file.Close();

Console.ReadLine();

}






Pour ceci aucun problème, voila que tout se complique lorsque je
veux tester une valeur du fichier. Disons que dans le fichier source
j'ai [date],


je veux afficher 1, donc j'ai essayé de cette facon, (je ne remet que la boucle)












Code:, ----
while((line = file.ReadLine()) != null)

{

if(line =="[date]")

{

System.Windows.Forms.SendKeys.SendWait("1");

}

else

{

System.Windows.Forms.SendKeys.SendWait(line);

System.Threading.Thread.Sleep(1000);

}

counter++;

}







Mais ceci me bloque mon application et je ne vois pas du tout le probleme.





Si vous auriez une ptit idée !!! Merci

6 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Salut, les crochets [ ] posent des problèmes avec SendKeys faut les mettres dans des accolades comme pour les touches spéciales, enfin je crois.. : )
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Ceci ne change rien, je viens de tester en enlevant les crochets et en laissant tout simplement date mais ca ne change rien !!
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

System.Threading.Thread.Sleep(1000); !!!
combien t'as de lignes, si seulement ya 10 lignes != [date], ca va se bloker 10 secondes !!!

YaoYao !!
1 + 1 = 10
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Et si tu veux avoir toutes les lignes il faut aussi laisser le temps à notepad de s'ouvrir, même avec SendWait.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
cf méthode WaitForInputIdle pour celà. :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Avec ceci :

Code:
while((line = file.ReadLine()) != null)
{
if (line.Trim().StartsWith("[date]"))
{System.Windows.Forms.SendKeys.SendWait("line");}
else
{
System.Windows.Forms.SendKeys.SendWait(line);
System.Threading.Thread.Sleep(1000);
}
counter++;
}


Cela fonctionne a un défaut près et je n'arrive vraiment pas a comprendre pourquoi, il m'ouvre 13 bloc note et dans un de ces 13 bloc note, il écrit 13 fois le mot line qui correspond au 13 lignes du fichier source

Etrange !!!