Le Deal du moment :
Cartes Pokémon EV8.5 : coffret dresseur ...
Voir le deal

Aller en bas

comprehensible ?

4 - 67%
2 - 33%
0 - 0%
 
Total des votes: 6
 
Sondage clos
Berka
Berka
Staffeux retraité

Nombre de messages : 1832
Age : 34
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

les APIs windows ! Empty les APIs windows !

Sam 3 Mai 2008 - 13:51
Ce tutoriel n'est destiné qu'à des utilisateurs du ruby/ rgss confirmés, étant donné sa difficulté. (je ne veux décourager personne)
J'essaye de le faire le plus simple possible, peut etre au détriment de son exhaustivité...
Tout d'abord, qu'est-ce qu'une api windows ?
C'est un moyen très direct d'agir, de controler le systeme d'exploitation windows.
Et bien sur, cela nous interresse très fortement pour personnaliser notre jeu !

Windows (ouh qu'il est gentil) nous offre donc plusieurs types d'apis, presentes dans le dossier d'installation de l'OS windows, sous forme de dlls, Dynamic Link Library.
en voici les principales et les plus utilisées:

(pour windows 32 bits, pour XP, je ne connais pas encore très bien vista)

    user32.dll interface utilisateur: etat du clavier, souris ...
    kernel32.dll gere les periferiques: imprimante, et permet de modifier la base de registre...
    shell32.dll reseau, redemarrer, quitter windows ...
    gdi32.dll affichage: ecran...
    comctl32.dll affiche des elements de controle: progressbar, barres d'outils...
    comdlg32.dll boites de dialogue: manipulation de fichiers...
    winmm.dll gestion multimedia, implantée a windows

mais cette liste est loin d'etre complete, etant donné toutes les possibilités qu'offrent les apis.

passons maintenant a leur utilisation:
RGSS possède bel et bien une classe, nommée Win32API, gerant l'importation de dlls.

interressons nous a un code très court, permmetant d'emuler une combinaison de touches:
Code:
@clavier = Win32API.new(user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v')

  • on assigne a une variable @ clavier toute l'api:
  • on appelle la classe Win32API, avec comme arguments ceci: (user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v')
  • user32.dll : nom de la dll
  • keybd_event : fonction de la dll (en effet la dll user32 est comme une boite, regroupant de nombreuses fonctions comme keybd_event, SetCursorPos etc...)
  • ['i', 'i', 'l', 'l'] ou %w(i i l l) (meme chose): plus compliqué: on crees un tableau comportant tous les parametres a entrer dans la focntion de la dll, on y reviendra...
  • 'v', la sortie de l'api, on y reviendra aussi...


ceci: @clavier = Win32API.new(user32.dll', 'keybd_event', ['i', 'i', 'l'], 'v')
ne nous sert a rien pour l'instant, ce n'est qu'une variable, il faut l'appeler pour qu'elle agisse sur le systeme:
on fait donc ca:
Code:
@clavier.call(0xA4, 0, 2)
ces 4 arguments (0xA4, 0, 2) renvoient à ces 4 parametres ['i', 'i', 'l'] gné, pourquoi des i et des l ?
ben il faut faire de l'anglois Laughing

  • i = integer, c'est un entier, commme 1, 5, 123, 34453 ...
  • l = long, c'est un nombre: 155,552, 542,458888, 1,00
    il existe aussi:
  • p = texte, contiendra un string (c'est un pointeur...)
  • v = void type, variable reservée a la sortie, donc au dernier argument de @clavier = Win32API.new(user32.dll', 'keybd_event', ['i', 'i', 'l'], 'v')

donc: @clavier.call(0xA4, 0, 2)
0xA4: numero de la touche
0 : "code matériel d'analyse"
2; etat de la touche (pressée ou pas)

par contre d'une dll a l'autre, ou meme d'une fonction d'une dll a l'autre les arguments changent
exemples:
@readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')
@findwindow = Win32API.new('user32', 'FindWindowA', %w(p p), 'l')
@desktop = Win32API.new("user32", "SystemParametersInfo", ['L','L','P','L'] , 'L')
... ...
mais comment trouver le nombre d'arguments et de parametres, ainsi que leur forme ?
il n'y a pas d'autres moyens que de faire une recherche sur le web
je vous conseille le site de microsoft: msdn2
et ce site très complet: allapis

voici un p'tit script d'exemple, que widow reconnaitra surement Laughing
necessite cette dll ici meme
car avec les apis, on peut meme importer ses propres dlls, placées au prealable dans son projet
Spoiler:
autre exemple:
Spoiler:

voila, en espérant avoir été le plus clair possible !

commentaires:
les apis sont propres a windows... de nombreuses apis ont été rajoutées dans vista
les apis sont utilisables dans n'importe quel script
par contre faites attention, avant des les utiliser, regardez quels sont leurs effets, ce serait bete de passer 1/2 heure a remettre normal son clavier (c'est du vecu Very Happy )
regardez bien les messages d'erreur, ils peuvent vous indiquer le probleme !


Dernière édition par berka le Sam 3 Mai 2008 - 21:32, édité 1 fois (Raison : précisions)
Widowan
Widowan
Fondateur
Nombre de messages : 1435
Age : 42
Localisation : France
Distinction : Sergent
Tyran professionnel
Date d'inscription : 15/12/2007
https://www.rpgmakervx-fr.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 17:15
Voila ! Berka c'est le type qui en a plein le ciboulot, mais qui nous sort que des scripts inutiles ! xD
Non, j'déconne , une fois posé sur le papier c'est très intéressant ce ptit cours (c'est plus clair que sur la chatbox à 2h du mat....).
Merci Berka ! les APIs windows ! 434126

_________________
"Si le monde appartiens à ceux qui se lèvent tôt, et si le royaume des cieux est destiné aux simples d'esprit, alors j'essaye juste de squatter un peu..."
Korndor
Korndor
Staffeux retraité

Nombre de messages : 4959
Age : 111
Localisation : Erem Vehyx
Distinction : Champion de boxe et au lit ! :O [Wax]
Être Mythique [Mister]
Papi Korndor qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco']
Un bonhomme, un vrai ! [Neresis]
Vieillard acariâtre [Didier Gustin]
Date d'inscription : 16/12/2007
https://www.rpgmakervx-fr.com/

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 17:37
Yeah, tu roxx berka!
Pour une fois que je comprends quelque chose! :P
Berka
Berka
Staffeux retraité

Nombre de messages : 1832
Age : 34
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 21:26
merci pour vos commentaires... bien sur, si vous avez des questions n'hesitez pas...
berka, qui continue son periple, en quete d'une utilisation utile de l'api... Laughing

je vais faire une liste des apis les plus utilisées et leur utilisation...
Widowan
Widowan
Fondateur
Nombre de messages : 1435
Age : 42
Localisation : France
Distinction : Sergent
Tyran professionnel
Date d'inscription : 15/12/2007
https://www.rpgmakervx-fr.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 21:36
Ouais, juste une tite question, aurais tu un tableau avec les codes de chaque touches ?
Ce serais intéressant, merci d'avance.

_________________
"Si le monde appartiens à ceux qui se lèvent tôt, et si le royaume des cieux est destiné aux simples d'esprit, alors j'essaye juste de squatter un peu..."
Berka
Berka
Staffeux retraité

Nombre de messages : 1832
Age : 34
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 21:47
je n'ai que ceci sous la main:
c'est de l'hexadecimal:
Spoiler:
Widowan
Widowan
Fondateur
Nombre de messages : 1435
Age : 42
Localisation : France
Distinction : Sergent
Tyran professionnel
Date d'inscription : 15/12/2007
https://www.rpgmakervx-fr.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 21:52
Mais c'est parfait !
Bon bah je vais essayer de bricoler un RMVX Guitar Hero en Ruby..... xD

_________________
"Si le monde appartiens à ceux qui se lèvent tôt, et si le royaume des cieux est destiné aux simples d'esprit, alors j'essaye juste de squatter un peu..."
Berka
Berka
Staffeux retraité

Nombre de messages : 1832
Age : 34
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 22:00
eh ! ca peut etre sur-stylé, ca !

bonne chance, n'hesite pas a me demander quelques apis ! Rolling Eyes
freezia
freezia
Staffeux retraité

Nombre de messages : 1734
Distinction : Elu membre de l'année 2009 haut la main.
Inventeur du Mapping Show.

caricaturatationeur de la comu'
[ Dudu']
Date d'inscription : 18/02/2008

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 22:03
Je crois qu'il disais ça pour plaisanter Very Happy
Sinon t'as vraiment du te creusé la cervelle pour nous pondre un tuto aussi explicite .
Bien joué !
Berka
Berka
Staffeux retraité

Nombre de messages : 1832
Age : 34
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

les APIs windows ! Empty Re: les APIs windows !

Sam 3 Mai 2008 - 23:54
liste d'applications api utiles et recurentes:

determiner la fenetre de jeu (ou handle)
Spoiler:

afficher un message, via une petite fenetre:
Spoiler:

son multimédia:
Spoiler:
Contenu sponsorisé

les APIs windows ! Empty Re: les APIs windows !

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum