2 votes

Obtenir les limites de n'importe quelle fenêtre sur le bureau en coordonnées d'écran, est-ce possible ?

Je cherche un moyen d'obtenir les limites des coordonnées de l'écran de n'importe quelle fenêtre arbitraire qui peut être affichée sur le bureau à tout moment sur une machine Windows. Par exemple, si vous avez un document pdf ouvert dans Adobe sur le bureau, j'aimerais pouvoir obtenir les coordonnées/limites de cette fenêtre arbitraire avec un programme écrit, le langage utilisé n'est pas important.

Ma question spécifique : Ce qui précède est-il possible ?

Ce que j'ai fait jusqu'à présent, c'est simplement obtenir la position de la souris à l'écran en Java, en utilisant la classe PointerInfo, et plus particulièrement la méthode getPointerInfo(). (API ici : http://docs.oracle.com/javase/6/docs/api/java/awt/PointerInfo.html ). Encore une fois, tout ce que j'ai fait est de trouver où se trouve la souris en coordonnées d'écran, ce n'est pas directement lié à mon problème, mais j'ai pensé que c'était un bon point de départ.

Je ne cherche pas à ce que quelqu'un me donne un extrait de code sur la façon de procéder, mais simplement à ce que l'on reconnaisse que c'est possible et peut-être un lien vers une API ou une documentation de classe pour m'aider. Encore une fois, je ne cherche pas une solution dans un langage particulier.

Merci pour votre temps, -Kevin

EDIT : J'ai posté ce message en c# car il semble que ce soit le meilleur langage pour ce problème.

2voto

Mike Nakis Points 7259

Oui, bien sûr, c'est possible. (Et sous Windows, le meilleur langage à utiliser pour ce travail est le C#).

Il existe peut-être un moyen d'y parvenir en utilisant uniquement des objets dotnet et en invoquant uniquement des fonctions dotnet, mais je ne connais pas cette méthode.

La méthode que je connais fait appel à Pinvoke, qui est le mécanisme par lequel le code géré dans Dotnet peut appeler le code non géré dans les DLL natives de Windows.

Regardez le WindowFromPoint fonction : http://www.pinvoke.net/default.aspx/user32.windowfrompoint

Et une fois que vous avez trouvé la fenêtre, regardez les GetWindowRect fonction : http://www.pinvoke.net/default.aspx/user32.getwindowrect

0voto

Francis Upton Points 13363

Regardez cette Javadoc pour Window (Java AWT). Il semble qu'il s'efforce de le faire, mais il ne peut le garantir.

0voto

Andrew Thompson Points 108505

L'utilisateur final est-il suffisamment motivé pour aider ? Si oui, c'est facile.

  1. Faites une capture d'écran de l'ensemble de l'écran.
  2. Montrez-le à l'utilisateur dans une image : icône -> étiquette -> volet de défilement -> cadre.
  3. Ajoutez un écouteur de souris à l'étiquette.
  4. Demandez à l'utilisateur de sélectionner une section rectangulaire de l'étiquette.
  5. Utilisez les points de début et de fin du déplacement de la souris comme coins du rectangle.

Bien sûr, il est possible de faire quelques ajustements. Offrir des vues élargies des coins des limites, offrir des moyens d'ajuster chaque coin pixel par pixel . Si vous poursuivez cette stratégie, vous pourriez commencer par ce code qui est conçu pour sélectionner un point à l'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X