2010-04-01 33 views
5

Encontré ese código en alguna parte y lo encontré bastante útil, pero me gustaría encontrar una manera de hacerlo funcionar para que capture solo el objetivo de ventana dado. Tal vez con un ID de proceso o Nombre de ventana. Incluso si esa ventana no está activa.Captura de pantalla de ventana de VB.NET (ALT + PRINTSCREEN)

No quiero activar esa ventana pero quiero obtener una captura de pantalla como si estuviera haciendo Alt + PrintScreen en ella.

Este es el código que funciona para la captura de pantalla completa

Private bmpScreenShot As Bitmap 
    Private gfxScreenshot As Graphics 

    bmpScreenShot = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb) 

    gfxScreenshot = Graphics.FromImage(bmpScreenShot) 
    gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy) 

    bmpScreenShot.Save(fileName, ImageFormat.Png) 

utilizo el Visual Basic 2008 Express

gracias de antemano!

+0

posible duplicado de [Captura de pantalla de la ventana activa?] (Http://stackoverflow.com/questions/1163761/capture-screenshot-of-active-window) – sloth

Respuesta

1

Esto funciona en vb.net2.0. Lo acabo de usar. Here is the source code.

Dim SC As New ScreenShot.ScreenCapture 

    'captures entire desktop straight to file 
    SC.CaptureScreenToFile("c:\accops\test\desktop2.jpg", Imaging.ImageFormat.Jpeg) 
0

La manera más fácil de hacerlo, aunque es un truco, es la siguiente:

SendKeys.Send("{PRTSC}") 
Dim Screenshot As Image = Clipboard.GetImage() 
Screenshot.Save("c:\ScreenShot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 
1

Esto le dará la Alt + Printscreen, mostrando sólo frente a la mayoría de aplicaciones.

SendKeys.Send("%{PRTSC}") 

luego continuar de forma normal:

Dim Screenshot As Image = Clipboard.GetImage() 
Screenshot.Save("c:\ScreenShot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 
0

captura de la forma activa.

Private Sub tsbCamera_Click(sender As Object, e As EventArgs) Handles tsbCamera.Click 
    Dim bm As New Bitmap(Width, Height) 
    DrawToBitmap(bm, New Rectangle(0, 0, Width, Height)) 
    Dim name As String = InputBox("Name it:") 
    bm.Save(Application.StartupPath & "\ScreenShot\" & name & ".png", System.Drawing.Imaging.ImageFormat.Png) 
End Sub 
Cuestiones relacionadas