Tom's Guide > Forum > Programmation > Simuler le clavier dans un jeu, Impossible ?
Mot :    Pseudo :           
 

Salut

J'ai voulu tester la simulation d'un clavier dans un jeux pour faire tirer en non-stop mon personnage. Au début c'était surtous pour voir la gestion du clavier mais le problème est que hors jeux (bloc note par exemple) la touche fonctionne mais dans le jeux ca ne fonctionne pas. Voila mon code:

Code :
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main()
  5. {
  6. HWND FenetreJeux = FindWindow(NULL,"Nom du programme j'ai testé avec ioUrban" );
  7. SetForegroundWindow(FenetreJeux)
  8. SetFocus(FenetreJeux);
  9. while(1)
  10. {
  11. keybd_event('G',0,0,0);
  12. Sleep(1000);
  13. }
  14. return 0;
  15. }



Si vous voyez ou est le problème n'ésité pas à poster.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu envoies un évènement Windows à ton aplication, mais ton jeu (que je suppose créé avec DirectX) n'utilise pas cette gestion évènementielle pour le clavier mais celui de DirectInput.
Alors on fait quoi ? un programme qui utilise DirectX ? et bien non, parce sous DirectX on peut déclarer une utilisation exclusive du clavier.
En assembleur ? peut-être, mais à partir de windows XP, ce n'est pas la peine d'utiliser les interruptions DOS (21h), ça ne marchera pas (pour ça que ma signature B407 CD21 foire un peu sous XP :D ), mais je suis persuadé que la solution en assembleur (certainement pas simple) existe.


Message édité par CRicky le 22-08-2008 à 23:32:58
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Donc je suis obligé de passer par l'assembleur pour faire ca ? Je vais voir sur google ce que je peux faire.

Merci

edit:J'ai trouvé ce code qui permet de charger le code ASCII en mémoire pour faire croire qu'une touche du clavier a été préssé

Code :
  1. function SimulKey(Scan, ASCII: Byte): Boolean; assembler;
  2. asm
  3.   mov  ah, 05h
  4.   mov  ch, Scan
  5.   mov  cl, ASCII
  6.   int  16h
  7.   not  al
  8. end;


La fonction est en pascal mais je ne devrait pas avoir de mal à la mettre en cpp. Mon seul soucis c'est que Scan correspond au scancode et je n'ai aucune idée de comment le récupérer. Si je suis sur une mauvaise voix pour résoudre mon problème alors dites le moi :)


Message édité par quarty le 23-08-2008 à 04:03:11
Répondre à quarty
Tom's Guide > Forum > Programmation > Simuler le clavier dans un jeu, Impossible ?
Aller à :

Il y a 1552 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens