Un raccourci toujours actif

Résolu
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006
-
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006
-
Bonjour,

Voilà j'ai une question très simple. Admettons que mon programme est lancé au démarrage de Windows, il fonctionne de façon cachée avec un "Me.Hide". Cependant, dès qu'on fait un raccourci clavier dans Windows, par exemple ALT+A, le programme le détecte et applique en conséquence une fonction. La quesiton est donc, comment faire pour que le programme puisse détecter n'importe quel raccourci clavier tapé sous Windows ? De même, comment faire pour qu'un tel programme puisse détecter une action effectuée sous Windows, comme un click droit par exemple ?

Merci de votre réponse qui je l'espère portera ses fruits
A voir également:

15 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Version .net du code de Mortalino (non testé).
HistodeX tu devrais faire une recherche sur le site et sur Google ce n'est pas les exemples qui manquent 'vb.net + Keylogger'
Mortalino quand dont que c'est que tu te mets à vb.net ?




Private Declare Function
GetKeyState Lib"user32" (ByVal nVirtKey AsInteger) As
Short




Const


VK_LBUTTON = &H1

'Gauche







Private



Sub MyTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyTimer.Tick





   'Bouton gauche




   If GetKeyState(VK_LBUTTON) >= 0


Then
           Me.Text "Bouton gauche de la souris relaché>"




   Else




      'Coordonnées de la souris
      Dim coord As

Point = Windows.Forms.Cursor.Position
            Me.Text "Bouton gauche de la souris enfoncé>"

      Me.Text +=
String
.Format(
"Coord X: {0} et Coord Y: {1}"
, coord.X.ToString, coord.Y.ToString) & vbCrLf & vbCrLf






   End


If




End


Sub
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Merci Willy,  en espérant que ça lui convient !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Hum ça sens le keylogger à plein nez tout cela.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

Heu, oui peut être, et en étant plus explicite ? ^o)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Un keylogger est un logiciel espion qui enregistre tout ce qui se frappe au clavier et les click de souris.

Et la description que tu donne me fait penser à ce genre de logiciel malveillant.

Sinon pour récupérer les saisies calviers il faut utiliser une api dont je ne me rapelle plus le nom.

Mais recherche dans les sources sur le sites. Il y en a plusieurs qui traite du sujet. La technique s'appelle le hook.

Mais perso, j'ai jamais fait.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Fais un essai avec ceci pour le clic de la souris :

Private Type
POINTAPI
    x As Long
   
y As Long
End
Type

Private Declare Function GetCursorPos Lib "user32"
(lpPoint As POINTAPI) As Long

Private Declare Function GetKeyState Lib "user32"
(ByVal nVirtKey As Long) As Integer

Const VK_LBUTTON = 1
' Bouton gauche souris

Private Sub Timer1_Timer()

   
' Déplacez-toi où tu veux et appuye sur le bouton
gauche
    ' de la souris et hop on sait tout quand on veut (caption de la form)

    Dim Coord As POINTAPI

    If GetKeyState(VK_LBUTTON) >= 0 Then
       
Me.Caption = "Bouton gauche de la souris relaché"
   
Else
        GetCursorPos
Coord        Me.Caption "Bouton gauche de la souris enfoncé : x " &
_
                     Coord.x & " , y = " & Coord.y
   
End If
End Sub

constantes :
Constante, Valeur    , Définition

VK_RBUTTON, 02, Bouton droit de la souris.
VK_MBUTTON, 04, Bouton du milieu de la souris (le 3ème boutton).
VK_RWIN, 5C, Touche Windows droite (Microsoft Natural Keyboard)., ----
VK_LWIN, 5B, Touche Windows gauche (Microsoft Natural Keyboard).

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

Ok merci mortalino je vais tenter ton truc et je te redis si ça marche ;-)
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

J'ai essayé, il faut remplacer certains trucs nottament les "type" par "structure" ou encore "caption" par "text" mais sinon le programme compile parfaitement. Cela dit, je n'ai pas l'impression que ma fonction Timer1_Timer() se lance, puisque rien ne se passe, il ne faut pas faire une manip pour que cette fonction se lance en permanence ?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
¨Pour le caption . text, je n'ai que le code qui n'est pas en .net

Pour le timer, met la valeur à 100, et à True

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

Pardonne moi mais je ne vois pas ce que tu veux dire... :/ Tu peux me renvoyer ton code avec les valeurs du timer qui marchent ? Merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Ben c'est celui qui est plus haut ^^

Mais moi je suis en VB6, toi en VB.net !
Ce que j'ai fait, c'est ouvrir un nouveau projet avec une Form.
J'ai placé un timer, ayant la propriété Interval à 100 mais tu peux mettre moins, et la propriété Enabled à True

Tous s'affiche dans le caption de la Form

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, en vb6, on peut aussi utiliser un timer virtuel (API SetTtimer) à la place du contrôle.
En vb.net, vois : System.Threading.Timer
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

en fait il me renvoit un msg d'erreur à chak fois que je lance la fonction Timer1_Timer(), dès qu'il essaye de faire le test "If GetKeyState(VK_LBUTTON) >= 0 Then", le message d'erreur étant : "A call to PInvoke function 'WindowsApplication1!WindowsApplication1.Form1::GetKeyState' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature."
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

Nan mais pour le timer ya aucun probleme, je mets la fonction Timer1_Timer à chak Tick du timer ke j'ai créé, mais comme je vous ai dit plus haut, j'ai un retour d'erreur quand la foncion est execuT ... ?
Messages postés
22
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
8 août 2006

Merci les gars, je valide vos deux réponses ;)