2010-04-18 5 views
0

J'écris du code qui utilise des appels non gérés dans des fonctions user32 telles que SetWindowsHookEx, etc.Comment puis-je savoir quelles sont les constantes Windows comme WM_MOUSEMOVE et WM_MOUSEDOWN si j'utilise C#?

Cela nécessite d'utiliser beaucoup de constantes dont je ne suis pas sûr de la valeur. Par exemple, si je veux définir le crochet comme un crochet de souris de bas niveau, j'ai besoin de savoir que WM_MOUSE_LL = 14.

Où puis-je rechercher ces points?

J'ai besoin de savoir ce que WM_MOUSEMOVE, WM_MOUSEDOWN et plus sont. Quand je traite du code interop, quelle est la manière la plus simple pour moi de trouver ces codes? Est-il possible pour moi de les importer en C# afin qu'ils soient définis?

Répondre

0

Parfois, les pages MSDN les répertorient, mais je trouve que le meilleur moyen est d'avoir un programme C++ ouvert et de faire un clic droit sur la constante et de dire aller à la définition.

Une autre façon de découvrir instantanément pour presque tout est d'utiliser Google code search. Plusieurs fois, vous trouverez la réponse dans les fichiers d'en-tête WINE.

2

C'est sur votre machine. Si vous avez VS2008, ouvrez c: \ program files \ microsoft \ windows \ v6.0a \ winuser.h et recherchez l'identificateur de message. Non, vous ne pouvez pas utiliser ce fichier dans un programme C#, il est écrit en C.

Il existe un outil disponible qui a traduit ces fichiers d'en-tête SDK en C#, téléchargez le P/Invoke Interop Assistant. Cliquez sur l'onglet "Recherche SigImp" et tapez l'identifiant que vous recherchez. Cliquez sur Générer pour créer la déclaration C#. C'est correct pour les identifiants de message mais devient moche pour les fonctions de l'API. Les déclarations sont traduites automatiquement et sont assez bruyantes et pas toujours optimales. Vérifiez la définition générée avec ce qui est disponible sur pinvoke.net

Questions connexes