Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIBRAIRIE RAWINPUT .NET


Information sur la source

Catégorie :Périphériques Source .NET ( DotNet ) Classé sous : usb, hid, souris, clavier, input Niveau : Expert Date de création : 26/07/2007 Date de mise à jour : 28/07/2007 10:56:58 Vu / téléchargé: 7 354 / 371

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
RawInput .NET est un wrapper managé de l'API Win32 du même nom, qui permet de gérer tous les périphériques répondant à la norme USB/HID ainsi que de gérer plusieurs souris ou plusieurs claviers. (chose que même DirectInput ne sait pas faire.)

J'ai fait le choix de faire un wrapper assez proche de la librairie originale, (une unique classe et un seul évènement statique pour tous les types de périphériques) ce qui permet de garder de bonnes performances et ne nécessite pas d'apprentissage si on connait la version Win32.
 

Conclusion

La documentation est non compilée (pour le moment), L'éditeur de Visual Studio n'affiche qu'une partie de l'aide, utilisez par exemple l'explorateur d'objets pour visualiser certaines remarques contenues dans les commentaires XML.

Avant d'exécuter l'exemple "MultiMouse" ajouter dans le projet une référence vers la librairie "RawInput.NET.dll".
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

27 juillet 2007 08:45:55 :
Correction d'un bug mineur.
28 juillet 2007 10:56:58 :
La description du device n'est plus une chaine vide sous Windows XP.

Commentaires et avis

signaler à un administrateur
Commentaire de Bidou le 26/07/2007 11:46:29 administrateur CS

Hé bien, elle s'est fait attendre cette première source dit-moi !
On espère que de similaires arriveront bientôt ;-)

signaler à un administrateur
Commentaire de Lutinore le 26/07/2007 12:20:24 administrateur CS

Dans 4 ans la prochaine :D

signaler à un administrateur
Commentaire de coq le 26/07/2007 18:57:05 administrateur CS

Lol
Bien, j'ajoute celà à la liste des trucs à regarder, ça peut être bon à savoir :-)

signaler à un administrateur
Commentaire de TheSin le 27/07/2007 10:22:57

Sympa :-)
Je ne connaissais pas RawInput, ça peut servir :-)
DirectInput gère plusieurs claviers/souris, mais ne permet pas de les utiliser en même temps, un seul périphérique de même type à la fois :(.
Pratique.

signaler à un administrateur
Commentaire de Lutinore le 27/07/2007 10:38:32 administrateur CS

TheSin > merci, oui c'est bien de cela que je parle :

"On Microsoft Windows XP, DirectInput enumerates only one mouse and one keyboard device, referred to as the system mouse and the system keyboard. These devices represent the combined output of all mice and keyboards respectively on a system. For information about how to read from multiple mice or keyboards individually on Windows XP, see the WM_INPUT documentation."

signaler à un administrateur
Commentaire de Lutinore le 01/08/2007 14:15:20 administrateur CS

Microsoft a sorti récemment MultiPoint SDK une sorte de wrapper autour de l'API RawInput pour .NET 3.0 (WPF) uniquement mais ça semble moins souple et moins rapide que ma petite librairie. :p

signaler à un administrateur
Commentaire de coq le 01/08/2007 18:59:27 administrateur CS

Exactement ! :p

signaler à un administrateur
Commentaire de djine le 27/10/2008 22:50:01 10/10

Très bonne source, je cherchais ça depuis longtemps !

Cependant, j'ai un tabletPC, et lorsque je tente d'utiliser le stylet et la souris en même temps, l'un ou autre se met attente jusqu'à ce qu'un nouvel événement se produise (exemple : MouseUp ou MouseDown).

Donc pas de possibilité d'utiliser le mouvement du stylet et de la souris en parallèle.

Si quelqu'un a une idée, je suis preneur !

9/10.

signaler à un administrateur
Commentaire de Lutinore le 28/10/2008 13:10:17 administrateur CS

Merci.. Je ne sais pas comment Windows gère le stylet, d'après ce que tu dis il simule une souris mais je ne vois pas pourquoi ça interfère avec l autre souris.

Avec ce code tu peux énumérer les périphèriques sur ton système.

foreach( RawDevice device in RawDevice.GetRawDevices( ) )
{
    RawInfo info = device.GetRawInfo( );
    string desc = String.Format
    (
        "Description: {0}\r\n" +
        "Handle: {1}\r\n" +
        "Type: {2}\r\n" +
        "Page: {3}\r\n" +
        "Usage: {4}",
        device.Description,
        device.Handle,
        device.RawType,
        info.UsagePage,
        info.Usage
    );
    MessageBox.Show( this, desc, "Info" );
}

signaler à un administrateur
Commentaire de djine le 28/10/2008 22:41:35

Voila la liste des devices de type mouse que j'obtiens sur mon portable sens aucune souris branché :
- Description: Wacom Mouse,Handle: 65615, Type: Mouse, Page: 1, Usage: 2 (WACOM -> tablet)
- Description: Souris HID,Handle: 65613, Type: Mouse, Page: 1, Usage: 2
- Description: Souris HID,Handle: 65611, Type: Mouse, Page: 1, Usage: 2
- Description: Synaptics PS/2 Port TouchPad,Handle: 65609, Type: Mouse, Page: 1, Usage: 2

Le mouvement du stylet ou touché génèrent bien l'event RawDevice_RawInput(...).
Il est d'ailleur tout a fait possible de recupèrer les coordonnées du stylet avec
(MouseData )args.GetRawData(), cependant, ce sont des coordonnées absoluts (contrairement à une souris). Ces coordonnées sont d'ailleurs bien plus précises que la souris. (X allant de 0 à 10000 pr donner une ordre d'idée).

En revanche, les soucis arrivent lorsque que l'on essai de récupérer des infos sur la source des donnée envoyé par l'event RawDevice_RawInput(). Dans le cas d'un mouvement de stylet, le handle est égale à 0, et il est impossible de vérifier la source des données par un GetRawDevice(), cela lance une exeption.

Comment se fait il que le handle est détècté correctement lors de l'initialisation :
ex : Description: Wacom Mouse,Handle: 65615, Type: Mouse, Page: 1, Usage: 2
Et que lors de l'evenement RawDevice_RawInput(), le handle soit 0.

Merci pour ton aide !

signaler à un administrateur
Commentaire de Lutinore le 29/10/2008 13:24:37 administrateur CS

Un handle à zéro signifie un device virtuel généré par Windows ou un device simulé depuis un autre et dans ce cas GetRawDevice( ) renvoie null puisque le device n'existe pas, c'est ce qui provoque une exception dans ton code. Mais même avec un handle à zéro tu devrais pouvoir utiliser ce device correctement sans qu'il interfère avec les autres souris.

Essaye d'utiliser le flag InputMode.BackgroundMode dans RegisterRawDevices pour voir si tu reçois les events du stylet avec son vrai handle.

Sinon tourne toi vers des API dédiées au tablet PC comme "RealTimeStylus".

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Simulation clavier/souris [ par Ordinastie ] Bonjour.Voial, mon but est de simuler l'appui d'une touche ou d'un séquence de touches du clavier.M'étant penché du coté de l'API Bloquer la souris et le clavier [ par sayed2005 ] je cherche comment bloquer la souris et le clavier d'un PC,a l'instar de NetS Récupérer positions souris et frappes clavier [ par guillaume_quest ] Bonjour à tous, Je voudais connaître une fonction qui permet de récupérer la position de ma souris par rapport au haut de la fenêtre (ou en haut de ma [Souris et Clavier] [ par KqMii ] Bonjours, J'aimerais savoir comment je pourais par exemple quand j'appuis sur la touche F4 cela simule un clic souris et Quand j'appuis sur F3 Cela et problème de gestion de clavier et de souris [ par brunhoff ] bonjour dans un programme j'utilise un clavier visuel et l'utilisation du clavier "physique" pour pouvoir jouer à 2 mais dès que je clique s Souris [ par cispo ] Bonjour, Je voudrais savoir si il est possible d'empécher la souris de sortir d'un textBox tant que l'utilisateur n'a pas validé ce qu'il a Interdire la selection dans une listbox avec la souris en SelectionMode.One [ par VHSeifer ] BonsoirJuste un détail, mais je voudrais bien savoir si c'est possible "d'annuler" en quelque sorte la selection d'un item d'une listbox si Detecter la connection et la deconnection USB [ par racing66 ] Bonjour, Voilà, dans le casre du développement d'un projet, je dois trouver un moyen pour detecter la connection et la déconnection d' Message d'aide au passage de la souris sur des formes [ par poullos ] Bonjour, je ne sais pas ou poster mon problème alors je le mets ici. Je suis toujours en trainde developper mon application pour une boite de m Temp de frappe au clavier : en langage C [ par benaloui ] Quelles les fontions C qui permettent de dire si une touche au clavier à été préssé ou relacher et le temps de pression ou de


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.