permet donc commencer par la signature de SendMessage, de Pinvoke.net:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
Il taks une poignée de fenêtre, hWnd, un ID de message, Msg, et deux paramètres génériques wParam et lParam qui changent de message en fonction de l'ID de message.
Ce que Spy ++ vous montre sont les paramètres qui ont été envoyés à SendMessage. Comme vous pouvez le voir, wParam et lParam ne s'affichent pas, mais hwnd, nHittest et wMouseMsg. En effet, Spy ++ sait ce que les paramètres wParam et lParam signifient pour un message WM_SETCURSOR et les décode pour vous.
décodage Donc, chaque morceau de ce que Spy ++ a envoyé:
00220540
- la poignée de fenêtre de réception du message - le paramètre hWnd.
S
- Cela signifie qu'il a été envoyé via SendMessage() et qu'il n'a pas été envoyé via PostMessage(). Voir http://msdn.microsoft.com/en-us/library/aa265147(v=vs.60).aspx
WM_SETCURSOR
- L'ID de message - le paramètre Msg . - handle de la fenêtre contenant le curseur - le paramètre wParam .
nHittest:HTCLIENT
- le code de test d'atteinte - le mot le plus faible du paramètre lParam . - le message de la souris - le mot haut du paramètre lParam .
La façon dont vous iriez d'envoyer le message à une fenêtre est:
enum WindowMessages {
WM_SETCURSOR = 0x0020,
WM_MOUSEMOVE = 0x0200,
....
}
enum HitTestCodes {
HTCLIENT = 1,
....
}
....
IntPtr hWnd = [get your window handle some how]
int lParam = ((int)WindowMessages.WM_MOUSEMOVE) << 16 + (int)HitTestCodes.HTCLIENT;
SendMessage(hWnd, (uint)WindowMessages.WM_SETCURSOR, hWnd, (IntPtr)lParam);
Pour comprendre ce que les autres messages signifient que vous pouvez faire une recherche sur Msdn.com pour le messsage dans la documentation de Windows. Donc, après avoir répondu à toutes ces questions, je ne pense pas que cela aura quelque chose à voir avec l'envoi de clés au jeu que vous essayez de contrôler. WM_SETCURSOR n'a rien à voir avec l'entrée au clavier.
quelle fonction C# SendMessage? Énoncez la classe complète .Net. –
Peu importe, je vais poster ce que j'utilisais, mais je peux facilement le changer, si quelqu'un publie une solution différente. – Ben
Considérant les dernières modifications, y a-t-il encore une question ici? Si oui, qu'est-ce que c'est? –