|
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal _
bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12
Private Sub Form_Load()
g_fIsWinNT = IsWinNT
With picQuelle
.AutoRedraw = True
.AutoSize = True
.Visible = False
End With
picZiel.AutoRedraw = True
End Sub
Private Sub cmdScreenshotDesktop_Click()
Clipboard.Clear
If g_fIsWinNT Then
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
Else
keybd_event VK_SNAPSHOT, 1, 0, 0
keybd_event VK_SNAPSHOT, 1, KEYEVENTF_KEYUP, 0
End If
DoEvents
SizeBitmapToPicBox picQuelle, picZiel
End Sub
Private Sub cmdScreenshotWindow_Click()
Clipboard.Clear
If g_fIsWinNT Then
keybd_event VK_SNAPSHOT, 1, 0, 0
keybd_event VK_SNAPSHOT, 1, KEYEVENTF_KEYUP, 0
Else
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End If
DoEvents
SizeBitmapToPicBox picQuelle, picZiel
End Sub
Private Sub SizeBitmapToPicBox(ByVal vpicQuelle As PictureBox, _
ByVal vpicZiel As PictureBox)
Dim sngRatio As Single
Dim sngWidth As Single
Dim sngHeight As Single
vpicZiel.Cls
vpicQuelle.Picture = Clipboard.GetData(vbCFBitmap)
sngRatio = vpicQuelle.ScaleWidth / vpicQuelle.ScaleHeight
sngWidth = vpicZiel.ScaleWidth
sngHeight = vpicZiel.ScaleHeight
If (sngWidth / sngHeight) > sngRatio Then
sngWidth = sngRatio * sngHeight
Else
sngHeight = sngWidth / sngRatio
End If
vpicZiel.PaintPicture vpicQuelle.Picture, _
(vpicZiel.ScaleWidth - sngWidth) / 2, _
(vpicZiel.ScaleHeight - sngHeight) / 2, _
sngWidth, sngHeight
End Sub
|
|