IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Screenshot [ctypes.windll CreateDCFromHandle]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut Screenshot [ctypes.windll CreateDCFromHandle]
    Bonjour tout le monde,

    Je planche sur la création d'un module permettant de faire des captures d'écran en utilisant seulement ctypes (pas de grosses lib telles que win32, wx, Qt, ... Il faut que ce module gère le multi-écrans (ce que PIL et Pillow ne font pas).

    Là où je bloque, c'est que ctypes.windll.gdi32 ne connait pas la fonction CreateDCFromHandle. J'ai regardé les sources de win32 pour m'en inspirer, en vain.

    Voici le code qui fonctionne pour l'écran principal, mais pas les autres : https://tiger-222.fr/paste/?71f5055d...S/n2rRg2Kk23o=
    À la ligne 35 ça bloque. J'ai essayé tout un tas de combinaisons, scruté stackoverflow ou la FAQ afin de trouver une solution. Mais rien, pas moyen de prendre une fichue capture d'écran.

    Est-ce que vous auriez quelques indices ?
    Merci d'avance

  2. #2
    Membre éclairé Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    J'ai trouvé mon erreur, pour ceux que ça intéresserait :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    hwindc = ctypes.windll.gdi32.CreateDCW('DISPLAY', 0, 0, 0)
    srcdc = ctypes.windll.user32.GetWindowDC(hwindc)
    memdc = ctypes.windll.gdi32.CreateCompatibleDC(srcdc)
    bmp = ctypes.windll.gdi32.CreateCompatibleBitmap(srcdc, width, height)
    ctypes.windll.gdi32.SelectObject(memdc, bmp)
    ctypes.windll.gdi32.BitBlt(memdc, 0, 0, width, height, srcdc, left, top, SRCCOPY)
    bmp_header = pack('LHHHH', calcsize('LHHHH'), width, height, 1, 24)
    c_bmp_header = c_buffer(bmp_header)
    c_bits = c_buffer(' ' * (height * ((width * 3 + 3) & -4)))
    got_bits = ctypes.windll.gdi32.GetDIBits(memdc, bmp, 0, height,
    c_bits, c_bmp_header, DIB_RGB_COLORS)

Discussions similaires

  1. screenshot en C
    Par momow dans le forum Windows
    Réponses: 3
    Dernier message: 14/02/2004, 03h56
  2. screenshot dans une résolution > a celle affichée
    Par cemoi dans le forum DirectX
    Réponses: 8
    Dernier message: 29/12/2003, 18h16
  3. prise rapide de screenshot
    Par cemoi dans le forum DirectX
    Réponses: 12
    Dernier message: 24/11/2003, 14h12
  4. screenshot
    Par Heimdall dans le forum Windows
    Réponses: 9
    Dernier message: 08/08/2003, 11h33
  5. Screenshot
    Par rellik dans le forum Composants VCL
    Réponses: 8
    Dernier message: 05/08/2003, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo