Comment simuler la frappe de la touche "copie d'écran"? [Résolu]

Signaler
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
-
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

Messages postés
27
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
24 février 2005
1
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
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
11
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 ! ;)
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
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
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
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.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
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.
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
11
ok Caribensila :) Merci de ces précisions !

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

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.