Y at-il un moyen de détecter quand une fenêtre qui n'appartient pas à mon application est glissée dans Windows en utilisant python/pywin32? Je veux le configurer de telle sorte que lorsque je fais glisser une fenêtre dont le titre correspond à un motif près du bord du bureau, il s'aligne sur le bord lorsque la souris est relâchée. Je pourrais écrire du code pour aligner toutes les fenêtres avec ce titre sur le bureau chaque fois que la souris est libérée, mais je veux seulement déplacer la fenêtre particulière qui était en train d'être déplacée.python + win32: glisser la fenêtre de détection
Répondre
pyHook
semble avoir fait une partie des travaux nécessaires, car il est clavier crochu et les événements souris. Ce que je vais probablement faire est de garder un registre constant de toutes les fenêtres qui m'intéressent, ainsi que leurs positions. Ensuite, à la souris, je détecterai si l'une des fenêtres a bougé, et si c'est le cas, et que la souris a été lâchée, sur la barre de titre, je supposerai qu'elle a été traînée là et l'a cassée. Le code à accrocher suit.
import pyHook
def mouseUp(event):
if event.Injected: return True
print "Mouse went up"
return True
hookManager = pyHook.HookManager()
hookManager.MouseLeftUp = mouseUp
hookManager.HookMouse()
Vous devez également une boucle principale, que j'ai depuis que je suis en utilisant gtk
déjà, ou vous pouvez faire:
import pythoncom
pythoncom.PumpMessages()
Jusqu'à présent, la seule solution possible est d'utiliser SetWindowsHookEx
. Pywin32 n'interface pas, donc je pense que je vais devoir faire quelque chose comme ceci:
- Ecrivez un module d'extension C. Il a une fonction comme
setCallback
qui prend une fonction python à appeler lorsque l'événement de glisser se produit. - Ecrivez une DLL C qui contient le hook réel dans Windows. Cette DLL devra en quelque sorte appeler la fonction python actuellement définie.
Je ne suis pas sûr de savoir comment faire cela, ou si elle est correcte, bien ..
- 1. fenêtre Win32 dans WPF
- 2. Win32: Aucune fenêtre n'apparaît
- 3. python/win32: publier un événement click dans une fenêtre?
- 4. Détection de glisser déposer dans la zone de texte HTML?
- 5. win32: vérifie si la fenêtre est minimisée
- 6. Win32 Device Context sans fenêtre
- 7. Détection des éléments parents par glisser-déposer
- 8. Détecter la fenêtre Déplacer dans la page de propriétés (win32)
- 9. fenêtre de détection de GTK redimensionnement de l'utilisateur
- 10. Détection clé de la flèche - KeyDown pour toute la fenêtre
- 11. Activation de la fenêtre Python
- 12. Python win32 service
- 13. python win32 extensions documentation
- 14. Pamie et python-win32 question
- 15. Se débarrasser de la fenêtre d'invite dans win32
- 16. L'application Win32 est suspendue pour minimiser l'animation de la fenêtre
- 17. Comment rendre la fenêtre de l'API Win32 plus moderne?
- 18. Xorg, Python, et la fenêtre courante Titre
- 19. Comment faire pour définir la fenêtre Win32 en tant que propriétaire de la fenêtre WPF?
- 20. Où est la ressource Win32 pour le curseur de la souris pour faire glisser les séparateurs?
- 21. La fenêtre principale de Gorm n'accepte pas le glisser-déposer
- 22. QT4 Glisser la fenêtre sans barre de titre
- 23. mysqldb sur python 2.6+ (win32)
- 24. Win32 SDK fenêtre enfant peinture (C/C++)
- 25. Détection d'une opération de glisser depuis une autre application
- 26. Création d'un service python win32
- 27. Win32 WM_PAINT et une fenêtre enfant
- 28. Détection de frappe à l'aide de Python
- 29. Utiliser OpenGL dans une fenêtre normale (Win32)
- 30. Crochet Win32 WH_CBT - fermer la fenêtre avant sa création
s'il vous plaît revenir et publier des mises à jour de cette question. Je suis très curieux de voir ce que vous proposez. – Mark
@Mark: consultez ma nouvelle réponse, on dirait que quelqu'un a fait partie du travail pour moi =) – Claudiu