VB.NET: Savoir si une touche est pressée en dehors de la form
Résolu
Anonyme209
Messages postés
681
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- VB.NET: Savoir si une touche est pressée en dehors de la form
- Vb.net express - Télécharger - Langages
- Vb.net - Télécharger - Langages
- Convert | VB.net ✓ - Forum Framework .NET
- Vb.net editor - Télécharger - Langages
- Listview vb.net ✓ - Forum Framework .NET
8 réponses
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
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.
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
J'ai essayé, la form est toujours visible, mais n'est plus la fenêtre active lorsque l'on va sur un autre programme.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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
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
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.
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