Partage
  • Partager sur Facebook
  • Partager sur Twitter

[user32] GetWindowRect : bordures windows 7 sur 10

Les bordures de la fenêtre renvoyée sont celles d'un autre OS Windows

Sujet résolu
    13 août 2018 à 16:49:36

    Bonjour à tous,

    Le titre n'est peut être pas explicite, dû à la limite de caractères, je vais vous expliquer le problème plus en détails.

    J'ai récemment commencé à développer un programme me permettant d'afficher des fenêtres de d'autres programmes sur un second ordinateur.

    Pour ce faire, je dois tout d'abord capturer les fenêtres voulues en utilisant leur nom. J'utilise alors la fonction GetWindowRect de la dll user32 afin d'en faire une capture puis d'afficher son contenu dans un projet WPF.

    Cela marche, cependant un problème majeur survient. En effet, je suis sous Windows 10, et la fenêtre renvoyée est composé des bordures de Windows 7 (figure suivante) :

    Je capture ici la fenêtre principale du logiciel Cmder.

    Ce dernier se trouve à gauche de l'image, tandis que son rendu depuis mon programme se trouve à droite. Comme vous pouvez le voir, des bordures Windows 7 sont affichées alors que je me trouve sur Windows 10.

    J'ai beau chercher, j'ai l'impression d'être le seul à être tombé sur ce problème.

    Avez-vous une solution ? Est-ce normal ? Comment remédier à cela ?

    Toute aide est la bienvenue !

    Merci de votre attention et bonne journée à vous par avance ! :)

    -
    Edité par French Gumiho 13 août 2018 à 16:51:51

    • Partager sur Facebook
    • Partager sur Twitter

    PANZER VOR !

      13 août 2018 à 18:39:25

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        13 août 2018 à 20:36:05

        Peut-être regarder ceci.

        Windows est bourré de blocs de code legacy pour rester rétro-compatible avec des vieilles applications.

        Depuis Windows Vista, tout ce qui est code Win32 est un peu mis à l'écart. Il y a beaucoup de choses qui ont changé dans la façon de gérer les applications, les fenêtres, etc.

        Il n'est pas impossible que cette fonction Win32 capture "un framebuffer" legacy...qui n'a pas grand chose à voir (visuellement parlant) avec ce qui se trouve dans le framebuffer du nouveau compositeur de fenêtre (qui se base beaucoup plus sur des technos type DirectX, DXVA et autre rendu accéléré matériellement, plus que sur des API GDI+).

        Voir aussi DWM pour plus d'info :

        When desktop composition is enabled, individual windows no longer draw directly to the screen or primary display device as they did in previous versions of Windows. Instead, their drawing is redirected to off-screen surfaces in video memory, which are then rendered into a desktop image and presented on the display.



        -
        Edité par Nisnor 13 août 2018 à 20:37:24

        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2018 à 10:44:09

          Bonjour,

          En utilisant conjointement GetWindowRect et GetClientRect, j'ai pu arriver à mes fins.

          Merci à vous deux pour les conseils et pour les informations sur Win32 ! :)

          • Partager sur Facebook
          • Partager sur Twitter

          PANZER VOR !

          [user32] GetWindowRect : bordures windows 7 sur 10

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown