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 :

Simulation clavier sans utilisation d'api?


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Simulation clavier sans utilisation d'api?
    Bonjour,
    alors voila, je cherche à simuler l'appui de touches sur le clavier sans utiliser les api windows (keybd_event,sendkeys..)
    J'ai lu un topic dans le forum turbo pascal dans lequel on parle d'écrire directement dans le buffer du clavier, mais je ne sais pas du tout si c'est possible en VB6.
    Enfait j'aimerais simuler un appui qui corresponde exactement à l'appui physique sur une touche.


    J'ai aussi pensé à peut-être comuniquer directement par l'intermédiaire du port ps/2 en utilisant un cable COM<>PS/2 et en programmant le port COM mais je pense qu'il y a moyen de faire plus simple.

    J'attend vos commentaires et suggestions avec impatience


    Julien_

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par taurus67
    Bonjour,
    alors voila, je cherche à simuler l'appui de touches sur le clavier sans utiliser les api windows (keybd_event,sendkeys..)
    Julien_
    Sendkeys n'est pas à ma connaissance une fonction d'une dll de Windows mais une fonction de VB

    Maintenant : simuler sans le sendkeys de VB ni "les api windows" ?...
    Euh...
    en soufflant sur la touche, peut-être, ou avec une baguette magique ???

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je vous ajoute le liens vers le topic dans lequel ils en parlent pour le turbo pascal :

    http://www.developpez.net/forums/showthread.php?t=12807

    Citation Envoyé par wormful_sickfoot
    Non, on ne peut pas utiliser keybd_devent dans un programme Turbo pascal, car c'est une API Windows...
    Pour simuler l'appui d'une touche, je ne vois rien d'autres que d'écrire directement dans le buffer du clavier, situé en mémoire. Fais une recherche sur le foum, un précédent message de HDD34 explique tout...

    a+
    Je n'ai pas retrouvé le message de HDD34 mais cela peut s'expliquer étant donné que ce topic n'est pas tout récent.


    Julien_

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Re,

    Je n'ai pas du tout l'intention d'analyser du Turbo Pascal (nnous sommes ici sous VB et nous y resterons)

    Ta question n'est pas précise, notamment en ce qui concerne l'endroit (l'application et son contrôle) où doit se faire ta simulation. ===>>> Puisqu'aucune précision n'est apportée à ce propos, tu vas avoir une réponse, sans SendKeys et san "api" pour simuler la touche "N" dans ta propre application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_KeyPress(KeyAscii As Integer)
      MsgBox "la touche " & Chr(KeyAscii) & "a été appuyée"
    End Sub
     
    Private Sub Command2_Click()
      Command1_KeyPress (vbKeyN)
    End Sub
    Conclusion ? : nécessité absolue d'être précis en posant une question
    Celà évitera des réponses du genre que celle que je viens de faire (et qui n'a d'autre propos que celui de mettre en évidence cette nécessité de précision) ...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Donc je vais donner plus de précisions.
    L'application en question est enfait un jeu (Cabal online en l'occurence) dans lequel j'aimerais pouvoir enchainer des actions sur un pc distant. Le problème est que ce jeu est accompagné par un soft nommé gameguard qui ) 'bloqué' jusqu'à présent toutes mes appli en vb6.
    Mes scripts fonctionnent très bien sur le bureau ou une quelconque autre applications mais pas sur le jeu, à cause de ce Gameguard. Je voudrais donc contourner le problème en simulant des keystrokes qui seraient exactement ceux produits physiquement.
    J'espère avoir été plus clair.


    Julien_

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Le problème est que ce jeu est accompagné par un soft nommé gameguard qui ) 'bloqué' jusqu'à présent toutes mes appli en vb6.
    As-tu envisagé l'utilisation de Java ?

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bien !
    Voilà enfin les précisions nécessaires apportées et la chose devenue maintenant claire.

    La réponse ne le sera donc pas moins (claire) : sans le Sendkeys de VB (scabreux) ni une fonction Windows (de l' Api) : réponse très nette : Mission impossible.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    @zaza : Je ne connais actuellement pas d'autres languages que le VB6. J'ai éventuellement pensé à m'impliquer un peu dans le turbopascal/asm pour ce projet mais ça risque d'être assez laborieux :p
    Y a t-il moyen de le faire en java?

    @ucfoutu : Je me disais aussi que cela serait peut-etre impossible en VB6



    Quoi qu'il en soit je vous remercie beaucoup pour vos réponses rapides.

    Julien_

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je pense qu'il faut ce qui est conseille sur le forum pascal, intégré un bout d'assembleur à ton programme pour ecrire en mémoire. Je ne sais pas si c'est possible en vb6, mais en c et c++ c'est possible.

  10. #10
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    salut,
    je ne voudrais pas te décourager mais les "techs anti-cheating" ne se contentent pas d'hooker les api standards mais doivent également interroger directement le contrôleur du clavier sans passer par le buffer...
    voir ici notamment: http://www.programmersheaven.com/mb/...ReadPostMode=0

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Dans ce cas moi je conseille à taurus67 de construire un robot et de dev son intelligence artificielle pour gérer à sa place son jeu
    Bon d'accord mon humour est pourri mais je ne peut pas m'en empêcher

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bah donc me reste plus qu'à envisager la 2eme solution peut etre, cad essayer de simuler le controleur du clavier avec un cable COM<>PS/2 par exemple que l'on trouve dans les 3€...
    Premièrement faut que je m'assure qu'on travaille à la meme tension des 2 cotés :p

    Julien_

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Pour information j'ai compilé le code TASM du lien que Omen a donné mais les keys sont envoyées dans le programme lui meme peut importe la fenêtre qui a le focus...

    Je suis désolé que le sujet s'éloigne un peu du VB6... mais je pense y retourner très bientôt étant donné que je vais tenter de simuler le controleur du clavier par l'intermédiaire du port COM...

    En y réfléchissant un peu, le but est que le keystroke simulé puisse être détecté par un Getkeystate....non? (est ce que le getkeystate lis dans le buffer ou comunique directement avec le controleur du clavier?)

    Julien_

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    Ta dernère question ne relève plus de VB6, en effet.

    Essaye d'imaginer un Chinois (ton clavier) dialoguant avec un Norvégien (ton OS) via un interprête (le driver de ton clavier) choisi par le fabricant de ton clavier pour transformer ce qu'il dit au Norvégien en signaux compris par le Norvégien.

    Windows sera toujours capable de comprendre ce que lui a dit l'interprête. Il sera également toujours capable de décider d'ignorer tout ou partie de ce que lui dit l'interprête. Il sera enfin capable de "se mentir au besoin à lui même". Il ne sera par contre jamais capable de faire dire au Chinois ce que le Chinois (ton clavier) n'a pas demandé à son interprête de dire au Norvégien (ton OS).

    Mais une autre fois : VB6 n'est là plus du tout concerné !

    Bonne continuation...

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    C'est une façon de voir les choses


    Julien_

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2015, 09h09
  2. Simuler une saisie au clavier en utilisant les API Windows
    Par devvanjier dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 04/06/2014, 13h11
  3. Methodes sans utiliser les API windows
    Par Abdellah2010 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/04/2011, 22h34
  4. Réponses: 3
    Dernier message: 21/03/2010, 21h22
  5. Réponses: 7
    Dernier message: 16/03/2006, 20h54

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