Bonjour à tous,

Je tourne en rond depuis un moment avec un Pb de Presse papier.

J'ai une petite applis qui fait des capture d'ecran. Je souhaite coller cette capture d'écran dans le presse papier afin de pouvoir inserer l'iamge dans d'autre application.

Code pour faire la capture d'écran :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Begin
keybd_event(vk_snapshot, 0, 0, 0); //colle la fenêtre active dans le clipboard
  sleep(200);//sinon ça plante des fois ....
  MyBitmap := TBitmap.create;
  if ClipBoard.HasFormat(CF_BITMAP) then
 begin 
    MyBitmap.assign(Clipboard);
    with MyBitmap do
    try///traitement

Voici le code pour coller l'image dans le presse papier ( en l'ayny convertie au préalable au format PNG) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.copy_clipboardClick(Sender: TObject);
var
  newPng: TPNGObject;
begin
  if (Image1.Picture.Bitmap.Empty) then
  begin
    showmessage('Il n''y a pas de capture à coller dans le presse papier!');
    exit
  end
  else
  newPng := TPNGObject.Create;
  newPng.Assign(Image1.Picture.Bitmap);
  newpng.CompressionLevel := 9;
  Clipboard.Assign(newPng);
  newpng.Free;
end;
Ca fonctionne, mais une seul fois ....si on procède à une seconde capture, aprés l'avoir insérée dans le presse papier, ça plante , j'ai le message et que l'on l'insére dans le presse papier , ça plante, j'obtiens le message suivant :
/!\Impossible d'ouvrir le presse papier!.
J'ai D7 Perso et Vista comme OS.

Merci d'aider un codeur du dimanche qui déprime !