Захват экрана VB.NET (ALT + PRINTSCREEN) - PullRequest
5 голосов
/ 02 апреля 2010

Я нашел этот код где-то, и я нахожу его весьма полезным, но я хотел бы найти способ заставить его работать, чтобы он захватывал только заданную цель окна. Может быть, с идентификатором процесса или именем окна. Даже если это окно не активно.

Я не хочу делать это окно активным, но хочу получить снимок экрана, как если бы я делал для него Alt + PrintScreen.

Вот код, который работает для полного захвата экрана

    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)

Я использую Visual Basic 2008 Express

Заранее спасибо!

Ответы [ 5 ]

1 голос
/ 14 апреля 2014

Это даст вам Alt + Printscreen, показывая только переднее большинство приложений.

SendKeys.Send("%{PRTSC}") 

Затем продолжите нормальный путь:

Dim Screenshot As Image = Clipboard.GetImage()
Screenshot.Save("c:\ScreenShot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
1 голос
/ 30 ноября 2012

Это работает в vb.net2.0. Я просто использовал это. Вот исходный код.

    Dim SC As New ScreenShot.ScreenCapture

    'captures entire desktop straight to file
    SC.CaptureScreenToFile("c:\accops\test\desktop2.jpg", Imaging.ImageFormat.Jpeg)
1 голос
/ 02 апреля 2010

Посмотрите на это Снимок экрана активного окна? Вместо this.Handle (текущее окно) вы можете вставить дескриптор любого другого окна (используя WinAPI функции, такие как FindWindow)

0 голосов
/ 04 февраля 2017

Захват активной формы.

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
0 голосов
/ 11 января 2014

Самый простой способ сделать это, хотя это и взломать, это:

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