2009-11-21 6 views
4

Je vais vérifier si l'utilisateur déplace une fenêtre (mon application n'a pas d'interface) et répondre en conséquence. Que pensez-vous être la meilleure façon de faire cela? Puis-je déterminer si l'utilisateur clique sur une barre de titre? Puis-je déterminer si une fenêtre est déplacée? Je dois alors attraper le hWnd de la fenêtre après que je sais qu'il est déplacé.C# - Détermine si l'utilisateur déplace une fenêtre

Répondre

4

Voici une technique à spy sur les poignées de fenêtre. Vous pouvez inspecter toutes les poignées qui sont ouvertes et attendre les messages de déplacement.

EDIT

.NET spy code.

+0

C'est un outil astucieux je l'ai utilisé une fois. Le projet était DOA, mais qui étais-je laisser passer l'occasion d'apprendre à espionner sur les applications. :-) –

5

Pour obtenir des notifications pour toutes les fenêtres, et pas seulement celles de Windows Forms, vous devrez utiliser un ensemble de connexions défini par la fonction API SetWindowsHookEx(). Vous aurez besoin d'un crochet WH_CALLWNDPROC afin que vous puissiez voir le message WM_MOVE que Windows envoie à la fenêtre.

Malheureusement, c'est un crochet global. Le code qui implémente le rappel de hook doit être empaqueté dans une DLL afin qu'il puisse être injecté dans tous les processus cibles. Cela crée un trou dans vos plans pour utiliser C# pour cela, vous ne pouvez pas injecter le CLR. La DLL doit être écrite en code non managé.

Cette code project offre une approche, y compris la DLL injectable non administrée dont vous aurez besoin.

Questions connexes