2010-04-01 4 views
5

Ich fand diesen Code irgendwo und ich finde es ziemlich nützlich, aber ich würde gerne einen Weg finden, damit es funktioniert, so dass es nur das gegebene Fensterziel erfasst. Vielleicht mit einer Prozess-ID oder einem Fensternamen. Auch wenn dieses Fenster nicht aktiv ist.VB.NET Window Screen Capture (ALT + DRUCKBILDSCHIRM)

Ich möchte dieses Fenster nicht aktiv machen, aber möchte eine Bildschirmaufnahme wie wenn ich Alt + PrintScreen darauf machen würde.

Hier ist der Code,

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) 

Ich benutze den Visual Basic 2008 Express

Danke im Voraus

für vollen Screen Capture funktioniert!

+0

möglich Duplikat [Capture-Screenshot des aktiven Fensters?] (Http://stackoverflow.com/questions/1163761/capture-screenshot-of-active-window) – sloth

Antwort

1

Diese in vb.net2.0 (WinAPI Funktionen wie FindWindow verwenden) funktioniert. Ich habe es gerade benutzt. 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

Der einfachste Weg, es zu tun, obwohl es ein Hack ist, ist dies:

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

Dieses Sie die Alt + Printscreen geben, nur vorderste Anwendung zeigt.

SendKeys.Send("%{PRTSC}") 

dann die normale Art und Weise weiter:

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

Capture the aktive Form.

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