Comment simuler la frappe de la touche "copie d'écran"?

Résolu
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 22 déc. 2004 à 01:06
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 22 déc. 2004 à 11:49
Salut!

Pour simuler la frappe de la touche "copie d'écran" j'avais essayé avec :
Keybd_event(VK_Snapshot,0,0,0);
et des tas d'autres trucs de ce style...
Mais ça ne marche pas.

Alors j'ai cherché a connaitre le code que renvoyait cette touche avec la procédure ci-dessous....
Et, à mon grand étonnement, contrairement aux autres touches, cette touche "copie d'écran" ne renvoie rien! Je ne comprends plus... :s

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i : integer;
begin
for i := 0 to 65535 do begin
Edit2.Text := IntToStr(i);
if Key = StrToInt(Edit2.Text then exit;
end;
end;

Quelqu'un peut-il m'expliquer et me donner une soluce? Ce serait bien sympa parce que je suis perdu, là. :)

7 réponses

cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
22 déc. 2004 à 09:12
J'ai trouvé ceci ça peut surement t'aider !

http://www.elists.org/pipermail/delphi/2002-April/019635.html

le code que j'ai essayé:

procedure TForm1.SimulateKeystroke(Key : byte; extra : DWORD);
begin
  keybd_event(Key, extra, 0, 0);
  keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     SimulateKeystroke(VK_SNAPSHOT, 0);
end;


@lex
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
22 déc. 2004 à 11:04
On peut faire plus simple pour une capture d'écran :
var
ImageBureau:TPicture;

procedure.....
begin
ImageBureau := TPicture.Create;
ImageBureau.Bitmap.Width := Screen.Width
ImageBureau.Bitmap.Height := Screen.Height
BitBlt(ImageBureau.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy)
ImageBureau.Free;


@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 déc. 2004 à 10:21
Merci bcp pour ta réponse, cupracing.
Mais je viens de trouver ce que je cherchais.
Simplement:

Keybd_event(VK_Snapshot,1,0,0);

C'était un problème de paramètre... :s
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 déc. 2004 à 11:25
Tu as tout à fait raison, ni69. Et c'était d'ailleurs ma première intention. Cependant, dans le cas de mon application, ça ne fonctionnait pas correctement car j'ai une Form avec la propriété AlphaBlend à True. Et danc ce cas, cette Form n'est pas prise dans la capture. A ma connaissance, il n'y a donc qu'une solution, dans ce cas particulier: c'est de simuler la frappe de la touche "copie d'écran"...

Mais je te remercie, ni69. Ta soluce est sans doute la meilleure dans la plupart des cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 déc. 2004 à 11:30
Je précise, pour ceux que ça intéressent:

Keybd_event(VK_Snapshot,0,0,0); //Copie tout l'écran

Keybd_event(VK_Snapshot,1,0,0); //Copie la fenêtre active

Bonne prog à tous. Et encore merci.
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
22 déc. 2004 à 11:33
ok Caribensila :) Merci de ces précisions !

@+
Bonne Prog'
Nico
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
22 déc. 2004 à 11:49
Ouais c'est bon à savoir merci Caribensila.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
Rejoignez-nous