Les Snippets

Connexion

Faire une capture d'écran

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/03/2006 18:47:19 et initié par neodante [Liste]
Date de mise à jour : 05/02/2007 12:22:26
Vue : 22232
Catégorie(s) : API, Multimédia, Graphique
Langages dispo pour ce code :
- Java
- C# 2.x
- VB 2005
- Delphi 5
- Windev
- VB.NET 1.x
- Delphi 5
- VB6, VBA



Langage : Java
Date ajout : 18/03/2006
Posté par neodante [Liste]

BufferedImage buf = null; // Notre capture d'écran
try {
    // Création de notre capture d'écran
    buf = new Robot().createScreenCapture(screenArea);
} catch (AWTException e) {
    e.printStackTrace();
}


Langage : C# 2.x
Date ajout : 22/03/2006
Posté par sebmafate [Liste]
public Bitmap CaptureScreen() { 
   Bitmap b = new Bitmap(
                       SystemInformation.VirtualScreen.Width,
                       SystemInformation.VirtualScreen.Height);
   Graphics g = Graphics.FromImage(b); 
   g.CopyFromScreen(0, 0, 0, 0, b.Size);
   g.Dispose();
   return b; 
}

Langage : VB 2005
Date ajout : 22/03/2006
Posté par Pym Corp [Liste]
Public Function CaptureScreen() As Bitmap
    Dim b As New Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height)
    Dim g As Graphics = Graphics.FromImage(b)
    g.CopyFromScreen(0, 0, 0, 0, b.Size)
    g.Dispose()
    Return b
End Function
Langage : Delphi 5
Date ajout : 27/03/2006
Posté par ni69 [Liste]
DateMAJ : 25/04/2006
var 
// Déclaration de la variable
ImageBureau:TPicture; 
// Création de l'objet en début de programme
ImageBureau := TPicture.Create; 

// Adaptation de la hauteur de l'image à celle de l'écran ImageBureau.Bitmap.Height := Screen.Height;  // Adaptation de la largeur de l'image à celle de l'écran ImageBureau.Bitmap.Width := Screen.Width;  // Capture de l'image du bureau BitBlt(ImageBureau.Bitmap.Canvas.Handle, 0, 0,    Screen.Width, Screen.Height, GetDC(GetDesktopWindow), 0, 0, SrcCopy); // Enregistrement dans un fichier... ImageBureau.SaveToFile(SaveDialog1.FileName);  // Copie dans le presse-papiers... Clipboard.Assign(ImageBureau); // Affichage dans un composant TImage... Image1.Picture.Bitmap.Assign(ImageBureau.Bitmap);
ImageBureau.Free; // En fin de programme, on libère l'objet
Langage : Windev
Date ajout : 15/06/2006
Posté par Elian Lacroix [Liste]
// Transfert de l'image écran dans un champ image
dCopieImage(copieEcran,ChampImage)
// Une sauvegarde sur disque est ensuite possible :
dSauveImageJPEG(ChampImage, "C:\Documents\Image.JPEG")

Langage : VB.NET 1.x
Date ajout : 20/12/2006
Posté par OneHacker [Liste]
DateMAJ : 05/02/2007
Private Declare Function BitBlt Lib "GDI32" (ByVal hDestDC As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As IntPtr, ByVal SrcX As Integer, ByVal SrcY As Integer, ByVal Rop As Integer) As Integer
    Private Declare Function GetForegroundWindow Lib "user32" () As IntPtr
    Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As IntPtr, ByRef lpRect As Rectangle) As Integer
    Private Declare Function GetDesktopWindow Lib "user32" () As IntPtr
    'Capture tout l'écran
    Public Shared Function ShotScreen() As Bitmap
        Try
            Dim DesktopRect As Rectangle = Screen.GetBounds(New Point(0, 0)) 'obtient la taille du bureau sous forme de rectangle dans DesktopRect
            Return ShotScreenPart(DesktopRect.Width, DesktopRect.Height) 'appele la fonction ShotScreenPart avec les dimensions du bureau. 
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Function
    'Capture la fenetre active
    Public Shared Function ShotActiveWin() As Bitmap
        Dim WinRect As Rectangle
        Try
            If GetWindowRect(GetForegroundWindow, WinRect) Then 'obtient la taille et la position de la fenetre active sous forme de rectangle (WinRect)
                Return ShotScreenPart(WinRect.Size.Width - WinRect.Left, WinRect.Size.Height - WinRect.Top, WinRect.Left, WinRect.Top)  'appele la fonction ShotLoc avec les dimensions et la position de la fenetre. 
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Function
    'Capture une partie de l'ecran, defini par les deux variable width et height (dimensions du rectangle), et des valeur optionels X et Y (base du rectangle)
    Public Shared Function ShotScreenPart(ByVal nwidth As Integer, ByVal nheight As Integer, Optional ByVal x As Integer = 0, Optional ByVal y As Integer = 0) As Bitmap
        Dim resultBmp As Bitmap = New Bitmap(nwidth, nheight) 'crée l'objet bitmap cible
        Dim SrcGraph As Graphics = Graphics.FromHwnd(GetDesktopWindow) 'crée l'objet "graphics" SelGraph a partir du handdle du bureau
        Dim BmpGraph As Graphics = Graphics.FromImage(resultBmp) 'crée un objet graphics à partir du bitmap
        Dim bmpDC As IntPtr = BmpGraph.GetHdc() 'obtient le device context du bitmap
        Dim hDC As IntPtr = SrcGraph.GetHdc() 'obtient le device context du bureau
        BitBlt(bmpDC, 0, 0, nwidth, nheight, hDC, x, y, &HCC0020) '"bit-block transfer" : copie chaque bits affichés dans le device context hDC dans le device context du bitmap 
        SrcGraph.ReleaseHdc(hDC) 'relache le device context du bureau
        BmpGraph.ReleaseHdc(bmpDC) 'relache le device context du bitmap
        SrcGraph.Dispose()
        BmpGraph.Dispose() 'libere toutes les ressources crées par l'objet (useless?)
        Return resultBmp
    End Function
Remarque :
A mettre de préférence dans un module.

Code créer par HVB voir ce lien(source) : http://www.vbfrance.com/code.aspx?ID=30267
Langage : Delphi 5
Date ajout : 23/07/2008
Posté par cirec [Liste]
{je vous propose ici une alternetive au code de Ni69}
procedure TForm1.Button1Click(Sender: TObject);
begin
  { fait la copie d'écran}
  keybd_event(VK_SNAPSHOT , 0, 0, 0);
  keybd_event(VK_SNAPSHOT , 0, KEYEVENTF_KEYUP, 0);
  {Traite les messages}
   Application.ProcessMessages;
  {Teste le format du presse papier}
   if ClipBoard.HasFormat(cf_Bitmap) then
  begin
  {et si le format existe on l'affiche dans un TImage}
    Image1.Picture.Bitmap.Assign(ClipBoard);
  {et on vide le presse papier pour la capture suivante
   ce qui permet d'être certain d'avoir la bonne capture}
     ClipBoard.Clear;
  end;
end;

Langage : VB6 , VBA
Date ajout : 12/02/2009
Posté par Charles Racaud [Liste]
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Const SRCCOPY = &HCC0020
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" ( _
  ByVal lpDriverName As StringByVal lpDeviceName As String, _
  ByVal lpOutput As String, lpInitData As LongAs Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As LongAs Long
Private Declare Function GetSystemMetrics Lib "user32" ( _
  ByVal nIndex As LongAs Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
  ByVal x As LongByVal Y As LongByVal nWidth As LongByVal nHeight As Long, _
  ByVal hSrcDC As LongByVal xSrc As LongByVal ySrc As Long, _
  ByVal dwRop As LongAs Long
' Copie de tout l'écran.
Private Sub CopyScreen(DestDC As Long, DestX As Long, DestY As Long)
  Call CopyScreenRECT(00, GetSystemMetrics(SM_CXSCREEN), _
    GetSystemMetrics(SM_CYSCREEN), DestDC, DestX, DestY)
End Sub
' Copie d'une zone de l'écran.
Private Sub CopyScreenRECT(Left As Long, Top As Long, Width As Long, _
  Height As Long, DestDC As Long, DestX As Long, DestY As Long)
  Dim hDC As Long
  hDC = CreateDC("DISPLAY", vbNullString, vbNullString, 0&)
  Call BitBlt(DestDC, DestX, DestY, Width, Height, hDC, Left, Top, SRCCOPY)
  Call DeleteDC(hDC)
End Sub

Snippets en rapport avec : Capture, Capturer, Écran, Screen, Screenshot



Codes sources en rapport avec : Capture, Capturer, Écran, Screen, Screenshot

{Visual Basic, VB6, VB.NET, VB 2005} SCREENSHOT / SNAPSHOT SANS CLIPBOARD NI SENDKEYS
Voici un petit code bien pratique permettant de faire des captures d'écran, sans utiliser le press...

{Visual Basic, VB6, VB.NET, VB 2005} GABSCREENSHOT : FAITES SIMPLEMENT ET RAPIDEMENT VOS CAPTURES D'ÉCRAN (ÉCRAN COMPLET, APPLICATION ACTIVE OU RÉGION DE L'ÉCRAN) EN VB.NET !
GabScreenshot vous permet de faire facilement des captures d'écran. Appuyez simultanément sur les...

{PDA / PocketPC} CAPTURE ECRAN (SCREENSHOT)
Code simple, il permet de capturer l'image de l'écran du device Le code utilise la fonction BitBl...

{Visual Basic, VB6, VB.NET, VB 2005} CAPTURE D'ECRAN TRÉS PARAMETRABLE
Capture d'écran Capture de la Form de l'application Capture du Client de la forme de l'applicatio...

{Assembleur} SCREENSHOT CAPTURE D'ECRAN
J'avais besoin d'un screenshot en asm J'ai eu beaucoup de mal a trouver des sources finalement j'a...

{Visual Basic, VB6, VB.NET, VB 2005} CAPTURE D'ÉCRAN GENRE SNAGIT AVEC RÉGLAGE DE LA QUALITÉ DE SORTIE (JPG)
Une copie d'écran de plus... Oui mais un prog complet, opérationel, et plutôt riche en fonction dans...

{Visual Basic, VB6, VB.NET, VB 2005} MODULE DE CAPTURE D'ÉCRAN
Permet de capturer l'écran ou une partie de l'écran au préalable définie par l'utilisateur. Les ima...

{Visual Basic, VB6, VB.NET, VB 2005} CAPTURE D'ÉCRAN AU FORMAT BMP / JPG AVEC RÉGLAGE DE LA QUALITÉ ET REDIMENSIONNEMENT
// SSHOT8514 permet de faire des captures d'ecran au format bmp et jpg // avec qualité réglable ...

{C / C++ / C++.NET} SCREENSHOOT A DISTANCE
Ce programme permet de prendre des screenshoots a distance. Il y a un programme serveur et un progra...

{C / C++ / C++.NET} SCREENSHOP - CAPTURE D'ECRAN
voila un code simple et tres court une capture d'ecran , tt simplement @+ moi je voudrai en...