CAPTURE D'ECRAN

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021 - 9 juin 2005 à 20:13
mouadh_net Messages postés 2 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 16 août 2009 - 16 août 2009 à 10:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31944-capture-d-ecran

mouadh_net Messages postés 2 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 16 août 2009 1
16 août 2009 à 10:32
merci
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
14 juin 2005 à 16:07
et bien voilà! En plus j'adore tout ce qui est graphique ;)
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
14 juin 2005 à 15:00
Merci pour le link qui traite l' affichage du curseur.
Pour ce qui concerne le dégradé, tu as raison, elle est archi-connue aussi :)

J' ai d' ailleurs posté la semaine dernière (à la demande de XGalletteX) une source pour faire toute forme géométrique en dégradé! et celle-ci je ne l' avais jamais vu !

A+
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
14 juin 2005 à 14:34
Mais tu n'est pas méchant, Mauricio, ne te dévalorises pas ainsi...il ya un début à tout, comme quand on découvre les formes géométriques et les dégradés, c'est archi-connu aussi...ah cette jeunesse ! ;)

Pour ceux qui ça intéresse, j'avais mis là le code de capture d'écran avec le curseur (un grand classique): http://phidels.com/php/index.php3?page=../php/pagetelechargementzip.php3&id=77

mais nous avons fait également le curseur +l'ombre du curseur...nous le mettrons à la prochaine màj

drjerome, JROD
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
14 juin 2005 à 10:58
Salut tout le monde, je vais mettre mon grin de sel aussi :)
je voudrai pas être méchant mais ce code doit exister dans au moins une bonne cinquantaine de sources sur ce site ...
A remarquer cependant, si mes souvenirs sont bons, qu' on remarque un clignotement de l' ecran sous win95/98! Donc il faut faire attention dans le cas où vous voudriez utiliser cette source de façon répétée (dans un timer par ex.) ...
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
12 juin 2005 à 19:56
bien sûr,avant la capture il faut penser à faire un "hide" (form1.hide) du form associé à un "sleep" (exemple : sleep(2000) )

A la fin on fait un "show" du form (form1.show) pour faire réapparaitre la fenêtre

drjerome
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
12 juin 2005 à 19:37
oui, c'est connu, on peut faire :

__________________________________________________________
keybd_event(VK_SNAPSHOT{=$2C},0,0,0);
keybd_event(VK_SNAPSHOT{=$2C},0,KEYEVENTF_KEYUP,0);
__________________________________________________________


pour récupérer l'image du clipboard, l'astuce consiste à rajouter au bon endroit la ligne "application.ProcessMessages" :


__________________________________________________________
begin
keybd_event(VK_SNAPSHOT{=$2C},0,0,0);
keybd_event(VK_SNAPSHOT{=$2C},0,KEYEVENTF_KEYUP,0);
application.ProcessMessages;
Image1.Picture.LoadFromClipboardFormat(cf_bitmap,ClipBoard.GetAsHandle(cf_Bitmap), 0);
end;
__________________________________________________________

on peut rajouter par sécurité (pour les tatillons) :

"if ClipBoard.HasFormat(cf_bitmap) then"


On trouve sur internet des exemples de capture avec le curseur de la souris visible (j'ai mis un exemple sur un autre site).

Egalement, je finis de mettre au point un exemple de capture avec curseur et l'ombre du curseur.

Encore mieux : ce serait intéressant de pouvoir rajouter les hints de windows aux captures. Les hints de Delphi sont "capturables"...ceux de Windows le sont moins...

Bon, un merci tout de même à ewertheimer pour son exemple ;)

drjerome
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
11 juin 2005 à 13:47
Pourquoi se compliquer la vie ?
Pour capturer l'écran dans le clipBoard, il suffit d'appuyer sur la touche Impr écran du clavier.

MonBitmap.Assign(ClipBoard) permet ensuite de récupérer l'image dans un bitmap pour en faire n'importe quoi...
comme je le fais régulèrement avec mon prog Leonardo.

jp ?o?
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
10 juin 2005 à 18:45
oui mais les boutons c'etait plutot pour montrer les differentes parti du code.
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
10 juin 2005 à 13:52
Bon ben plus qu'a ajouter la possibilité de faire une capture d'un overlay, ou d'un affichage directx. lol.
Marneus Calgar Messages postés 39 Date d'inscription mardi 3 octobre 2000 Statut Membre Dernière intervention 10 juin 2005
10 juin 2005 à 07:39
Il y a déjà du progrès par rapport au pseudo-tutoriel ^^ Sinon effectivement, il ne faut pas oublier de faire un ReleaseDC. Et TBitmap est bien plus adapté au stockage que TPicture (TPicture permettant d'afficher un TBitmap).

Si tu veux une fonction pour générer le Bitmap directement :

http://www.darkskull.net/?module=viewarticle&idarticle=30

Ensuite il ne te restera plus qu'à assigner ce bitmap au TPicture...
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
9 juin 2005 à 20:13
Juste quelques points qui me semble etrange.

Pourquoi utilises-tu Tpicture plutot que Tbitmap qui me semblerais plus approprié ?

Tout Getdc doit etre libéré par un releasedc mais bon, pleins de coders font cette erreur (il doinvent pas avoir le meme msdn que moi, lol).

Pourquoi un bouton afficher puisque l'affichage peut etre automatisé.

donc se code me semble suffisant:

procedure TForm1.ButtonRempliBitmapClick(Sender: TObject);
var DesktopDc : hdc;
ImageBureau : Tbitmap;
begin
ImageBureau:=Tbitmap.createsized(Screen.Width,Screen.Height);
DesktopDc:=GetDC(GetDesktopWindow);
BitBlt(ImageBureau.Canvas.Handle,0,0,Screen.Width,Screen.Height,
DesktopDc,0,0,SrcCopy);
Releasedc(GetDesktopWindow,DesktopDc);
Image1.Picture.Bitmap.Assign(ImageBureau);
ImageBureau.Free;
Image1.Invalidate;
end;

procedure TForm1.ButtonSauverSurFichierClick(Sender: TObject);
begin
if SaveDialog1.Execute then
Image1.Picture.Bitmap.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.ButtonCopierVersClipBoardClick(Sender: TObject);
begin
Clipboard.Assign(Image1.Picture.Bitmap);
end;

Bon Coding...

ManChesTer.
Rejoignez-nous