Bonjour à toutes et à tous,
J'ai installé l'ActiveX VLC (TVLCPlugin) pour tester la vue de mes caméras 2Mp H264.
Cela fonctionne correctement avec leur Ip.
J'ai utilisé le bouton à droite du lecteur pour agrandir la vue en plein écran et ainsi faire un printScreen qui me donne l'entièreté de la vue.
Mais j'utilise deux lecteurs avec un Tedit contenant l'ip de chaque caméra.
Ma procédure inscrite dans un Timer me permet de faire qu'un printScreen pour une caméra alors que la vue des deux caméras est affichée.
Si quelqu'un avait l'idée directement avec le composant Vcl de faire un ScreenShot cela serait plus facile sinon voir comment le printScreen pourrait se faire si une des deux caméras est en plein écran avec la touche PrintScreen.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 procedure TFcamera.Timer1Timer(Sender: TObject); var BitMap :TBitMap; Image :TJpegImage; NomFichier :String; i :Integer; begin // On doit enregistrer le presse-papier car la touche PrintScreen à été appuyée If AFaire And ClipBoard.HasFormat(cf_BitMap) Then Begin BitMap:=TBitMap.Create; Image :=TJpegImage.Create; Try // Chargement dans un BitMap du presse papier ( au format BMP ) BitMap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); Image.CompressionQuality:=80; // Conversion du BMP en JPG Image.Assign(BitMap); // Recherche d'un nom de fichier non utilisé I:=1; Repeat //A ajouter {if EdURL.Text = '192.168.1.10' then NomFichier:=chappli+'\CamAvant_'+IntToStr(i)+'.JPG';} if EdURL2.Text = '192.168.1.12' then NomFichier:=chappli+'\CamArrière_'+IntToStr(i)+'.JPG'; Inc(i); Until Not FileExists(NomFichier); // Enregistrement de l'image Try Image.SaveToFile(NomFichier); Except End; Finally BitMap.Free; Image .Free; End; End; AFaire:=False; // Test de la touche d'impression de l'écran If ((GetAsyncKeyState(VK_SNAPSHOT) and 32768) <> 0) Then Begin If Not UneFois Then Begin // Si la touche est appuyée on enregistre le presse-papier sur le prochain OnTimer UneFois:=True; AFaire:=True; End; End Else Begin UneFois:=False; End; end;
Merci d'avance,
@+,
cincap
Partager