Print Screen
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Print Screen
Il y a-t-il un moyen de capturer l'ecran et l'enregistrer en tant qu'imaqe?
Re: Print Screen
Un exemple pris sur Pureaera:
Code : Tout sélectionner
; German forum:
; Author: Unknown (updated for PB 4.00 by Andre)
; Date: 31. December 2002
; OS: Windows
; Demo: No
;Bitmap anlegen
CreateImage(0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
;auf angelegtes Bitmap zeichnen
DC = StartDrawing(ImageOutput(0))
BitBlt_(DC,0,0,ImageWidth(0),ImageHeight(0),GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY )
StopDrawing()
;Bitmap an Fenstergroesse anpassen
ResizeImage(0,640,480)
If OpenWindow(0, 10, 10, 640, 480, "Screenshot", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
StartDrawing(WindowOutput(0))
DrawImage(ImageID(0),0,0)
StopDrawing()
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
EndIf
End
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Print Screen
merci
Re: Print Screen
@Nico : j'utilise toujours ton prg 

Re: Print Screen
Merci Dobro, le code aurait besoin d'une mise à jour!
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Print Screen
c'est super mais comment je lenregistre dans lordi en tant kimage
Re: Print Screen
heu ! apprends a utiliser la touche F1Parole De JOJO a écrit :c'est super mais comment je lenregistre dans lordi en tant kimage
cela appel la doc de Purebasic
tu aura acces a la bibliotheque image ...
et donc a l'instruction
Resultat = SaveImage(#Image, NomFichier$ [, ImagePlugin [, Options [, Profondeur]]])
avant de poser une question utilise le bouton rechercher du forum
et/ou utilise la touche F1 dans l'editeur de Purebasic ,pour avoir la doc !
de plus je t'encourage a regarder les Tuto
ici :
http://www.purebasic.fr/french/viewtopi ... =21&t=6664
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Print Screen
ok ta raison
merci bcp en tout cas
la prochaine fois je me casserais un peu plus la tete avant de vous prendre la tete
merci bcp en tout cas
la prochaine fois je me casserais un peu plus la tete avant de vous prendre la tete
Re: Print Screen
Merci Dobro de m'avoir rappelé à moi aussi que c'est SaveImage() -- la touche F1 étant trop loin
Pour aider tout le monde, et surtout Jojo qui en a fort besoin
je me suis mis à écrire une procédure complète (nico: comme ça c'est mis à jour
)
Je suis quasi nul en API mais là il me semble que l'auteur original de cet excellent code a oublié un ReleaseDC_()... (sans doute pour que la mémoire ne déborde pas lorsqu'on s'amuse à garder l'écran chaque seconde!) Je l'ai ajouté, ça ne semble pas faire de mal à l'ordinateur ni à PureBasic... mais quelqu'un peut-il le confirmer?
Exemple d'usage:

Pour aider tout le monde, et surtout Jojo qui en a fort besoin


Je suis quasi nul en API mais là il me semble que l'auteur original de cet excellent code a oublié un ReleaseDC_()... (sans doute pour que la mémoire ne déborde pas lorsqu'on s'amuse à garder l'écran chaque seconde!) Je l'ai ajouté, ça ne semble pas faire de mal à l'ordinateur ni à PureBasic... mais quelqu'un peut-il le confirmer?
Code : Tout sélectionner
Procedure.s zPrintScreen(FileName.s)
Im=CreateImage(#PB_Any,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN)); create a fullscreen bitmap
hWnd=GetDesktopWindow_()
hDDC=GetDC_(hWnd)
hDC=StartDrawing(ImageOutput(Im))
BitBlt_(hDC,0,0,ImageWidth(Im),ImageHeight(Im),hDDC,0,0,#SRCCOPY)
StopDrawing()
ReleaseDC_(hWnd,hDDC)
;ResizeImage(Im,800,600); image can be resized
If UCase(FileName)="/A"
FileName.s=_PrintScreen+FormatDate("PrintScreen_%yyyy%mm%dd%hh%ii%ss",Date())+".jpg"; _PrintScreen est le répertoire où je stocke mes impression-écrans
EndIf
If UCase(FileName)=""
Input.s=InputRequester("PrintScreen","Save Screen Image As...",_PrintScreen+FormatDate("PrintScreen_%yyyy%mm%dd%hh%ii%ss",Date())+".jpg")
If Input.s=""
FreeImage(Im)
ProcedureReturn ""
EndIf
FileName.s=Input.s
EndIf
UseJPEGImageEncoder()
Result=SaveImage(Im,FileName,#PB_ImagePlugin_JPEG,10)
FreeImage(Im)
If Result
ProcedureReturn FileName.s
Else
ProcedureReturn ""
EndIf
EndProcedure
Code : Tout sélectionner
Global _PrintScreen="C:\Temp\PrintScreen\"; remplacez ce répertoire par le vôtre
zPrintScreen("/A"); ""=prompt, "/A"=automatique, or un nom de fichier valide
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Print Screen
merci bcp