VB.NET: Savoir si une touche est pressée en dehors de la form
Résolu/Fermé
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
-
8 févr. 2015 à 14:37
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 14 févr. 2015 à 15:22
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 14 févr. 2015 à 15:22
A voir également:
- VB.NET: Savoir si une touche est pressée en dehors de la form
- Vb.net download - Télécharger - Langages
- VB Editor - Télécharger - Langages
- Tp vb.net + correction pdf ✓ - Forum VB / VBA
- Exercices + corrigés de Visual Basic - Forum VB / VBA
- Vb.net comment ✓ - Forum Framework .NET
8 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 févr. 2015 à 15:01
8 févr. 2015 à 15:01
Bonjour,
C'est très simple, si tu es dans un autre form pour lancer l'action tu précèdes le bouton qui déclenche l'action du nom de ton formulaire principal, comme ceci:
Dans le form principal:
Dans le Form2
C'est très simple, si tu es dans un autre form pour lancer l'action tu précèdes le bouton qui déclenche l'action du nom de ton formulaire principal, comme ceci:
Dans le form principal:
Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click MsgBox("essai") End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Form2.ShowDialog() End Sub End Class
Dans le Form2
Public Class Form2 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Form1.Button1.PerformClick() End Sub End Class
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
8 févr. 2015 à 15:51
8 févr. 2015 à 15:51
Bonjour,
Je ne parlais pas de boutons, mais de touches du clavier.
Excusez-moi si je me suis mal exprimé, quand j'ai dit qu'une autre fenêtre était active, je parlais d'un autre programme, pas d'une autre form de mon application.
Je ne parlais pas de boutons, mais de touches du clavier.
Excusez-moi si je me suis mal exprimé, quand j'ai dit qu'une autre fenêtre était active, je parlais d'un autre programme, pas d'une autre form de mon application.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 févr. 2015 à 17:44
8 févr. 2015 à 17:44
Peut-être en mettant la propriété TopMost du Form à True , comme ceci:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.TopMost = True End Sub
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
8 févr. 2015 à 18:37
8 févr. 2015 à 18:37
J'ai essayé, la form est toujours visible, mais n'est plus la fenêtre active lorsque l'on va sur un autre programme.
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
11 févr. 2015 à 17:41
11 févr. 2015 à 17:41
up
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
11 févr. 2015 à 18:50
11 févr. 2015 à 18:50
Voir ceci: contrôle d'une application
https://codes-sources.commentcamarche.net/forum/affich-10041058-lancer-un-exe-et-le-redimensionner
https://codes-sources.commentcamarche.net/forum/affich-10041058-lancer-un-exe-et-le-redimensionner
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
12 févr. 2015 à 17:33
12 févr. 2015 à 17:33
Je ne comprends pas le rapport avec mon problème.
Je ne veux pas ouvrir une autre application, mais capter les touches appuyées n'importe quand (par exemple, si j'appuie sur Google Chrome, mon programme doit être capable de savoir quelle touche j'ai pressé.
Je ne veux pas ouvrir une autre application, mais capter les touches appuyées n'importe quand (par exemple, si j'appuie sur Google Chrome, mon programme doit être capable de savoir quelle touche j'ai pressé.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 févr. 2015 à 14:33
13 févr. 2015 à 14:33
OK, j'ai compris. Il faut un Timer pour activer le Form toutes les x secondes comme ceci:
Public Class Form1 Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Timer1.Stop() End Sub Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown MsgBox(e.KeyCode) End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.TopMost = True Timer1.Interval = 1000 '1 seconde a adapter Timer1.Start() End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Me.Activate() End Sub End Class
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
13 févr. 2015 à 15:10
13 févr. 2015 à 15:10
Ce n'est pas du tout ce que je veux.
Avec cette méthode, il est impossible d'utiliser un autre programme en même temps, la fenêtre s'active toutes les secondes....
Ce que je veux, c'est que l'on puisse utiliser une autre application en même temps, mais que, lorsqu'on appuie sur une touche, mon programme la capte automatiquement.
Avec cette méthode, il est impossible d'utiliser un autre programme en même temps, la fenêtre s'active toutes les secondes....
Ce que je veux, c'est que l'on puisse utiliser une autre application en même temps, mais que, lorsqu'on appuie sur une touche, mon programme la capte automatiquement.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
14 févr. 2015 à 09:00
14 févr. 2015 à 09:00
Je ne vois plus que l'utilisation du contrôle NotifyIcon qui au clic activera le Form . N'oublies pas de mettre une icône dans la propriété Icon du NotifyIcon
Bon continuation, je suis a bout d'argument
Private Sub NotifyIcon1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick Me.Activate() End Sub
Bon continuation, je suis a bout d'argument
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
14 févr. 2015 à 11:13
14 févr. 2015 à 11:13
On est obligé de cliquer sur le notifyicon pour activer la form, ce n'est pas plus pratique que d'activer manuellement la fenêtre à chaque fois......
De plus, le notifyicon ne peut pas capter de touches.
De plus, le notifyicon ne peut pas capter de touches.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
14 févr. 2015 à 12:14
14 févr. 2015 à 12:14
Il faut que tu comprennes que pour capter les touches clavier, il faut que ton Form soit Actif. La seule solution est le Timer qui active le Form toutes les x secondes. Je n'ai plus rien à ajouter à ce constat!
Bon courage
Bon courage
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
14 févr. 2015 à 14:22
14 févr. 2015 à 14:22
Dans ce cas, comment font les logiciels de KeyLogger?
Ils arrivent bien à capter les touches tapées sans qu'on ait besoin de les activer...
(Je vous rassure, je ne suis pas en train d'en faire un)
Ils arrivent bien à capter les touches tapées sans qu'on ait besoin de les activer...
(Je vous rassure, je ne suis pas en train d'en faire un)
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
Modifié par Anonyme209 le 14/02/2015 à 15:00
Modifié par Anonyme209 le 14/02/2015 à 15:00
Bonjour,
J'ai trouvé comment contourner mon problème:
Par exemple, si le raccourci est Ctrl + A:
Je me suis adapté du code d'un KeyLogger.
Merci quand même pour le temps que vous m'avez consacré.
(Cependant, il est conseillé de ne pas utiliser de raccourcis couramment utilisés par d'autres applications: l'application active traitera quand-même le code associé à la combinaison de touches)
On ne peut pas capter lorsqu'une touche est pressée, mais on peut savoir si une touche est pressée.
J'ai trouvé comment contourner mon problème:
Par exemple, si le raccourci est Ctrl + A:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal sKey As Int32) As Int16 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 1 End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick For i = 0 To 255 Dim result = GetAsyncKeyState(i) If result = -32767 Then 'ligne ci dessous à adapter selon les touches voulues. If i = Keys.A And My.Computer.Keyboard.CtrlKeyDown Then 'action a exécuter. End If End If Next i End Sub
Je me suis adapté du code d'un KeyLogger.
Merci quand même pour le temps que vous m'avez consacré.
(Cependant, il est conseillé de ne pas utiliser de raccourcis couramment utilisés par d'autres applications: l'application active traitera quand-même le code associé à la combinaison de touches)
On ne peut pas capter lorsqu'une touche est pressée, mais on peut savoir si une touche est pressée.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
14 févr. 2015 à 15:22
14 févr. 2015 à 15:22
Et pour conclure nous arrivons au KeyLogger.
Voici un programme qui détecte les touches pressées, même quand le Form n'est pas actif:
https://codes-sources.commentcamarche.net/source/49352-keylogger-vb-net-2008-v9-class-hook-pour-clavier-fr-et-vista
Voici un programme qui détecte les touches pressées, même quand le Form n'est pas actif:
https://codes-sources.commentcamarche.net/source/49352-keylogger-vb-net-2008-v9-class-hook-pour-clavier-fr-et-vista