IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6]Simuler le clavier sans sendkeys et keybd_event ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut [VB6]Simuler le clavier sans sendkeys et keybd_event ?
    Bonjour a tous voila je code une application en visual basic 6 qui doit envoyer une suite de touche dans un jeux le problème est que ni sendkeys , ni keybd_event ne fonctionne… j’ai chercher un peut de partout , j’ai trouver des personne qui on le même problème mais rien point de vu « solution » c’est pour cela que je fait appelle a vous car je n trouve pas le moyen de faire croire que j’appuis sur ce maudit clavier ^^

    Par avance merci pour les solution @++


    ps : J'ai lus un truc sur DirectInput par directX mais comment l'utiliser j'ai chercher mais j'ai rien trouver ...

  2. #2
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    c'est quoi exactement le probleme ? essai d'etre un peut plus clair. qu'est qui ne marche pas ?? le code ou la fonction. En nous donnant un bout de code on poura voir le truc.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Salut ce qui marche pas c'est que le jeu ne reçoit aucune touche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ' // declaration -----
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    ' // function -----
    Public Function Mysendkeys(key As Byte, time As Long)
    keybd_event key, 0, 0, 0 ' on appuis
    Sleep time               ' on attent
    keybd_event key, 0, 2, 0 ' on lache
    End Function
     
    ' // Objet -----
    Private Sub Timer1_Timer()
    If GetAsyncKeyState(123) <> 0 Then ' Detection de F12
        Mysendkeys 38, 5 ' Envoi d'une touche du clavier ( ici touche haut )
    End If ' fin
    End Sub
    tu peut essayer le code 1 timer et ces tout dans un texte sa marche sous windows aussi mais dans mon jeux rien... et je voudrais une alternative qui marche, ou une solution

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Bon deja je n'ai jamais utiliser le key_event donc ... Mais avec le SendKey de VB je crois que ca devrais aller ?? vu qu'il fait ce que tu veux faire. Pour plus d'info sur la fonction Aide en ligne (MSDN)
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par sovo
    Bon deja je n'ai jamais utiliser le key_event donc ... Mais avec le SendKey de VB je crois que ca devrais aller ?? vu qu'il fait ce que tu veux faire. Pour plus d'info sur la fonction Aide en ligne (MSDN)
    Citation Envoyé par greg1386
    [...]qui doit envoyer une suite de touche dans un jeux le problème est que ni sendkeys , ni keybd_event ne fonctionne…
    ... le problèmes et la aucun d'eux ne marche si non j'aurais pas crée ce post


    Pour ce qui est de directinput ... j'ai trouver un jeux source sous vb6 et j'ai pu en comprendre la lecture du clavier mais j'arrive pas a simuler un état voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    '----------------/// Module ///----------
     
    '/// Declaration
    Option Explicit
    Public dx As New DirectX7
    Public DI As DirectInput
    Public DIdevice As DirectInputDevice
    Public DIstate As DIKEYBOARDSTATE
     
    '/// Chargement du clavier
    Function Load_KB()
    Set DI = dx.DirectInputCreate()
      Set DIdevice = DI.CreateDevice("GUID_SysKeyboard")
      DIdevice.SetCommonDataFormat DIFORMAT_KEYBOARD
      DIdevice.SetCooperativeLevel Form1.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
        DIdevice.Acquire
    End Function
     
    '----------------/// Fin du module ///----------
     
     
    '----------------/// Form1 ///----------
     
    '/// chargement
    Private Sub Form_Load()
    Load_KB
    End Sub
     
     
    '/// Objet
     
    Private Sub Timer1_Timer()
    DIdevice.GetDeviceStateKeyboard DIstate
    If DIstate.Key(203) <> 0 Then Text1 = "Droite"
    If DIstate.Key(205) <> 0 Then Text1 = "gauche"
    If DIstate.Key(200) <> 0 Then Text1 = "haut"
    If DIstate.Key(208) <> 0 Then Text1 = "bas"
     
    End Sub
     
    '----------------/// Fin de form1 ///----------

Discussions similaires

  1. Simulation clavier sans utilisation d'api?
    Par taurus67 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 30/07/2007, 22h26
  2. Réponses: 7
    Dernier message: 16/03/2006, 20h54
  3. [VB6]ouvrir une DLL sans en conaitre le nom à la creation
    Par victorracine dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/02/2004, 15h16
  4. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31
  5. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 02h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo