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

Windows Discussion :

pb capture ecran BITBLT


Sujet :

Windows

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut pb capture ecran BITBLT
    Bonjours

    je tente de faire un soft de prise de main a distance
    pour faire la capture d'écran j'utilise l'API bitblt cela fonctionne plutôt bien mise à par le temps de capture 0.3S mais là n'est pas le problème majeur que je rencontre
    De façon aléatoire Bitblt plante avec comme message "Espace insuffisant pour traiter cette commande"
    Cela peut ce produire des la première capture ou après plus d'une centaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dc := getdc(0);
    BitBlt(bm.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
    ReleaseDc(0, dc);
    Bm etant un tbimap

    c'est codé sous delphi 2005
    le plantage ce produit sous n'importe quel type de pc

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    s'il y a ce message d'erreur c'est que les objets GDI ne sont pas tous correctements effacés.
    Si le programme alloue bcp d'objets GDI pour faire des captures d'écran à chaque instant s'assurer qu'ils soient bien désalloués avec DeleteObject..

    je conseille d'utiliser à 100% les API win32 et le moins possible la VCL et TCanvas.
    Ou bien alors la VCL à 100% sinon c'est galère si on mélange les 2 ( cas perso avec Borland C++ Builder sur un projet )

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut PB de copie d'écran par bitblt
    bonjour,

    J' ai déjà utilisé cette commande API avec des TCanvas et ce problème me dit qqchose...
    BitBlt est une fonction qui renvoie un booléen. Avec quelque chose de la forme (Delphi) :

    If Not BitBlt(.......) Then
    ShowError(GetLastError)

    ... il doit être possible d'obtenir un message plus détaillé.

    Conseil pour deboggage :
    - Tester que bmp.Canvas.Handle est <> 0,
    - Contrôler les dimensions width et height de bmp :
    - non nulles ?
    - >= aux dimensions de l'écran (Screen.Width, Screen.Height) ?

    Bon courage

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Enfin trouvé le PB
    il fallait que je verrouille le canvas de mon tbitmap avant de faire des modif dedans
    problème apparemment connu des que l’on utilise des thread donc cela donne un truc dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dc := getdc(0);
    bm.Canvas.lock
    BitBlt(bm.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
    Bm.Canvas.unlock;
    ReleaseDc(0, dc);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Image capture ecran
    Par tsdia2 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/05/2007, 00h44
  2. Faire capture ecran
    Par tsdia2 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 26/04/2007, 15h57
  3. capture ecran dans le Cview
    Par xiabolo86 dans le forum MFC
    Réponses: 1
    Dernier message: 09/01/2007, 10h53
  4. Capture écran du menu grub
    Par aymanouch dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 01/12/2006, 16h11
  5. capture ecran
    Par latisane dans le forum MFC
    Réponses: 7
    Dernier message: 08/03/2005, 16h36

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