如何通过VB编程将运行后的窗体保存为图片并保存?
可以是可以,不过需要调用window dll去获取窗口handle。以下VB代码:
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Runtime.InteropServices
Namespace MyDll
Friend Class MyClass
Private Structure RECT
Public x1 As Integer
Public y1 As Integer
Public x2 As Integer
Public y2 As Integer
End Structure
Private Shared Declare Function FindWindow Lib "user32.dll" (lpClassName As String, lpWindowName As String) As IntPtr
Private Shared Declare Function GetWindowDC Lib "user32.dll" (hwnd As IntPtr) As IntPtr
Private Shared Declare Function GetWindowRect Lib "user32.dll" (hWnd As IntPtr, <Out()> ByRef rect As Win32Helper.RECT) As IntPtr
Private Shared Declare Function PrintWindow Lib "user32.dll" (hwnd As IntPtr, hdcBlt As IntPtr, nFlags As UInteger) As Boolean
Private Shared Declare Function CreateCompatibleDC Lib "gdi32.dll" (hdc As IntPtr) As IntPtr
Private Shared Declare Function CreateCompatibleBitmap Lib "gdi32.dll" (hdc As IntPtr, nWidth As Integer, nHeight As Integer) As IntPtr
Private Shared Declare Function SelectObject Lib "gdi32.dll" (hdc As IntPtr, hgdiobj As IntPtr) As IntPtr
Private Shared Declare Function DeleteDC Lib "gdi32.dll" (hdc As IntPtr) As Integer
Public Sub CaptureWindowToFile(lpWindowName As String, filename As String, format As ImageFormat)
Dim expr_07 As IntPtr = Win32Helper.FindWindow(Nothing, lpWindowName)
Dim windowDC As IntPtr = Win32Helper.GetWindowDC(expr_07)
Dim intPtr As IntPtr = Win32Helper.CreateCompatibleDC(windowDC)
Dim rECT As Win32Helper.RECT
Win32Helper.GetWindowRect(expr_07, rECT)
Dim intPtr2 As IntPtr = Win32Helper.CreateCompatibleBitmap(windowDC, rECT.x2 - rECT.x1, rECT.y2 - rECT.y1)
Win32Helper.SelectObject(intPtr, intPtr2)
Win32Helper.PrintWindow(expr_07, intPtr, 0U)
Dim arg_65_0 As Image = Image.FromHbitmap(intPtr2)
Win32Helper.DeleteDC(windowDC)
Win32Helper.DeleteDC(intPtr)
arg_65_0.Save(filename, format)
End Sub
End Class
End Namespace