Nivek821
Messages postés18Date d'inscriptionlundi 25 juin 2012StatutMembreDernière intervention 5 mars 2013
-
29 juil. 2012 à 15:15
Nivek821
Messages postés18Date d'inscriptionlundi 25 juin 2012StatutMembreDernière intervention 5 mars 2013
-
30 juil. 2012 à 14:49
Bonjour, mon problème est le suivant :
Je voulais faire un programme qui permettrait de faire une ou plusieurs action(s) prédéfini, or quand je veux effectuer une action, il me l'exécute 32 fois. Je pense que cela est lié à mon Timer me servant à séparer chaque action par un temps prédéfinis.
Si quelqu'un pouvait me dépanner, cela m'aiderais beaucoup.
Merci de m'aider.
Extrait du code :
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
TextBox1.Enabled = False 'verouille les composants du form
TextBox2.Enabled = False
ComboBox1.Enabled = False
NumericUpDown1.Enabled = False
Button1.Enabled = False
Button2.Enabled = False
Button3.Enabled = False
Button4.Enabled = False
Button5.Enabled = False
Me.Hide() 'rend la fenetre invisible
LectureAction.Start() 'execution des actions
TextBox1.Enabled = True 'déverouille les composants du form
TextBox2.Enabled = True
ComboBox1.Enabled = True
NumericUpDown1.Enabled = True
Button1.Enabled = True
Button2.Enabled = True
Button3.Enabled = True
Button4.Enabled = True
Button5.Enabled = True
End Sub
Private Sub InterprétationLecture()
Try
TextBox3.Select(0, 0)
TextBox4.Select(0, 0)
TextBox5.Select(0, 0)
TextBox6.Select(0, 0)
TextBox7.Select(0, 0)
For Each Contenuligne3 As String In TextBox3.Lines 'Contenuligne = au texte d'une ligne.
For Each Contenuligne4 As String In TextBox4.Lines
For Each Contenuligne5 As String In TextBox5.Lines
For Each Contenuligne6 As String In TextBox6.Lines
For Each Contenuligne7 As String In TextBox7.Lines
If Not Contenuligne3 = Nothing Then 'Si la ligne n'est pas vide alors,
If Not Contenuligne6 = Nothing Then
If Not Contenuligne7 = Nothing Then
Dim LigneMax, DernièreLigne
DernièreLigne = Split(TextBox7.Text, vbNewLine, , vbTextCompare)
LigneMax = DernièreLigne(UBound(DernièreLigne) - 1)
If Not Contenuligne4 = Nothing Then 'Si la ligne n'est pas vide alors,
If Not Contenuligne5 = Nothing Then
If Contenuligne3 "Clique gauche" Then 'si contenuligne3 "Clique gauche" alors
Dim x As Integer, y As Integer 'le clique
x = CLng(Contenuligne4)
y = CLng(Contenuligne5)
Call SetCursorPos(x, y)
Call apimouse_event(mouseeventf_leftdown, 0, 0, 0, 0)
Call apimouse_event(mouseeventf_leftup, 0, 0, 0, 0)
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Clique droit" Then
Dim x As Integer, y As Integer 'le clique
x = CLng(Contenuligne4)
y = CLng(Contenuligne5)
Call SetCursorPos(x, y)
Call apimouse_event(mouseeventf_rightdown, 0, 0, 0, 0)
Call apimouse_event(mouseeventf_rightup, 0, 0, 0, 0)
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
End If
End If
If Contenuligne3 = "Entrée" Then
SendKeys.Send("{ENTER}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Retour" Then
SendKeys.Send("{BackSpace}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Flèche haut" Then
SendKeys.Send("{UP}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Flèche bas" Then
SendKeys.Send("{DOWN}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Flèche gauche" Then
SendKeys.Send("{RIGHT}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
If Contenuligne3 = "Flèche droite" Then
SendKeys.Send("{Left}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
End If
End If
End If
End If
End If
Next Contenuligne7
Next Contenuligne6
Next Contenuligne5
Next Contenuligne4
Next Contenuligne3
Catch ex As Exception
End Try
End Sub
Private Sub LectureAction_Tick(sender As System.Object, e As System.EventArgs) Handles LectureAction.Tick
LectureAction.Stop()
InterprétationLecture()
End Sub
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 30 juil. 2012 à 03:36
Bonjour,
System.Threading.Thread.Sleep(...)
Sinon, mes remarques concernant le code en général restent valides et te faciliteront la tache en correction/débogage..
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 29 juil. 2012 à 17:01
Bonjour,
Afin de faciliter la lecture de ton code :
- Indentes ton code.
- Nommes tes variables et tes contrôles de manière logique :
+ TxtColonneLignes est plus explicite que TextBox1
- Regardes aussi le contrôle TreeView
- Un peu plus de commentaire aiderait aussi.
Concernant le code :
Dim x As Integer, y As Integer 'le clique
x = CLng(Contenuligne4)
Clng convertit en Long, alors pourquoi extraire un Long pour le mettre dans un Integer ?
En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
---------------------------------------------------------------------
[list =ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
Nivek821
Messages postés18Date d'inscriptionlundi 25 juin 2012StatutMembreDernière intervention 5 mars 2013 30 juil. 2012 à 00:59
Je vais reformuler ce que je voudrais mais en simplifiant le code.
Avec 1 bouton appelé "Button4" je voudrais que celui-ci me permette après chaque action de faire une pause avec une valeur prédéfinit.
Part exemple avec "Sleep" (m'expliquer par la même occasion comment sa marche).
If Contenuligne3 = "Flèche haut" Then
SendKeys.Send("{UP}")
LectureAction.Interval = Contenuligne7
If TextBox7.Lines.Count < LigneMax Then
LectureAction.Start()
Sleep(Contenuligne6) 'Contenuligne6 est le temps d'attente prédéfinit
End If
End If