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

Langage Delphi Discussion :

copie d'écran décalée


Sujet :

Langage Delphi

  1. #1
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut copie d'écran décalée
    Bonjour
    J'ai écrit la procedure ci-dessous pour pouvoir capturer l'écran, quoi qu'il contienne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure copiecran(s:string);
    var  aBitmap : TBitmap; Jp : TjpegImage;
    begin
    aBitmap := TBitmap.Create;
    Jp := TjpegImage.Create;
    //clipboard.clear;
    keybd_event(44{VK_SNAPSHOT},0,0,0);//    Capture d'ecran du Bureau
    if Clipboard.HasFormat(cf_BitMap) then// si le clipBoard contient un bitmap >> dans Image1
    aBitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
    jp.Assign(abitmap);
    jp.CompressionQuality := 100;{Qualite {Nombre de 1 a 100};
    jp.SaveToFile(s);
    abitmap.free;  jp.Free;
    end;
    çà marche MAIS
    je n'enregistre pas l'écran tel qu'il est au moment où j'appelle la fonction mais celui capturé A L'APPEL PRECEDENT !
    si j'execute le "clipboard.clear;", j'enregistre un fichier vide
    J'ai essayé de répéter chacune des instructions, sans résultat.
    Je peux toujours faire deux fois la manoeuvre qui appelle la fonction, mais c'est assez pénible, et parfois j'oublie et je perds des données
    Quelqu'un a-t-il une solution ? Merci
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je n'ai pas trop regardé la code, mais est-ce que tu es allé voir dans la FAQ ?
    Il y a un code tout fait ...

  3. #3
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Merci !
    J'aurais bien aimé comprendre pourquoi çà ne marchait pas, car il me semble que j'avais eu le même genre de problèmes (récupérer le contenu du "clipboard") dans d'autres circonstances.
    Si quelqu'un a une idée ...
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 740
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 740
    Points : 13 285
    Points
    13 285
    Par défaut
    Tout simplement parce que le traitement du clavier n'est pas prioritaire.

    Au moment où tu lis le clipboard, VK_SNAPSHOT n'a pas encore été exécuté. Keybd_Event n'a fait qu'ajouter une entrée dans le buffer de clavier sans pour autant assurer que la commande sera traitée immédiatement (peut être qu'un Application.ProcessMessages suffirait). Tu récupères donc l'image précédente .

  5. #5
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Tout simplement parce que le traitement du clavier n'est pas prioritaire.

    Au moment où tu lis le clipboard, VK_SNAPSHOT n'a pas encore été exécuté. Keybd_Event n'a fait qu'ajouter une entrée dans le buffer de clavier sans pour autant assurer que la commande sera traitée immédiatement (peut être qu'un Application.ProcessMessages suffirait). Tu récupères donc l'image précédente .
    Cà marche en effet. Merci !
    Quand j'ai commencé à programmer, les ordinateurs étaient déterministes, c'est là que je vois comme le temps passe
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 24/09/2006, 21h11
  2. [Débutant] Copie d'écran vers BMP
    Par Mille sabords dans le forum Windows
    Réponses: 2
    Dernier message: 23/11/2005, 14h17
  3. Faire une copie d'écran d'un Panel
    Par Wilco dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2005, 17h28
  4. Reformatter un doc word pour en faire des copies d'écran
    Par titouille dans le forum VBA Word
    Réponses: 4
    Dernier message: 22/09/2005, 18h21
  5. Copie d'écran dans un fichier
    Par angsthase dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 17/08/2005, 00h45

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