Copie d'écran

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Copie d'écran

Message par Le Soldat Inconnu »

Salut

J'ai un souci pour faire des copie d'écran. Je n'arrive pas à avoir les fenêtre transparentes dessus

voici un exemple

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
; 
; Explication du programme :
; Faire une copie d'écran


Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
  If OpenLibrary(0, "user32.dll")
    CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2)
    CloseLibrary(0)
  EndIf
EndProcedure

If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Plein écran")
  SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
  SetWinTransparency (WindowID(), 180)
  ; Pour changer le niveau de transparence de la fenêtre
  ; Le niveau de transparence doit être compris entre 1 (transparence totale) et 255 (opaque)
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #WM_CLOSE
  
EndIf

Ecran_Largeur = GetSystemMetrics_(#SM_CXSCREEN)
Ecran_Hauteur = GetSystemMetrics_(#SM_CYSCREEN)

DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput())
  BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT)
StopDrawing()
ReleaseDC_(0, DC)

SaveImage(0, "Copie d'écran.bmp")

Delay(2000)
Il faut fermer la fen pour faire la copie d'écran (la fenêtre disparait 2 secondes après la copie d'écran)

Ca enregistre la copie d'écran dans une image bmp au même endroit que le code (ou dans purebasic\compileur\ si vousn'avez pas enregistrer le code)

J'ai essayé plusieurs solution mais toujours sans succés :(

merci d'avance pour votre aide :wink:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

retiré pour cause de trop nul !

:D
Dernière modification par Backup le sam. 13/nov./2004 23:30, modifié 1 fois.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Comme ça !

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu 
; Version de PB : 3.9 
; 
; Explication du programme : 
; Faire une copie d'écran 

#CAPTUREBLT = $40000000

Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l) 
  If OpenLibrary(0, "user32.dll") 
    CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2) 
    CloseLibrary(0) 
  EndIf 
EndProcedure 

If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Plein écran") 
  SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000 
  SetWinTransparency (WindowID(), 180) 
  ; Pour changer le niveau de transparence de la fenêtre 
  ; Le niveau de transparence doit être compris entre 1 (transparence totale) et 255 (opaque) 
  
  Repeat 
    Event = WaitWindowEvent() 
  Until Event = #WM_CLOSE 
  
EndIf 

Ecran_Largeur = GetSystemMetrics_(#SM_CXSCREEN) 
Ecran_Hauteur = GetSystemMetrics_(#SM_CYSCREEN) 

DC = GetDC_(0) 
CreateImage(0, Ecran_Largeur, Ecran_Hauteur) 
Dessin = StartDrawing(ImageOutput()) 
BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT|#CAPTUREBLT) 
StopDrawing() 
ReleaseDC_(0, DC) 

SaveImage(0, "Copie d'écran.bmp") 

Delay(2000)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

merci, je vais regarder ça :D
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ça marche super :D
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben ouais!!! :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ou t'a trouver ce "#CAPTUREBLT" ??? 8O
il est pas dans la doc de l'api " BitBlt "
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Je l'ai trouvé dans le Sdk, mais il doit être aussi dans le Msdn.
Répondre