3
ビジュアルベーシックで画面をキャプチャし、それをピクセル値のRBG配列に変換するコードが必要です。かなり高速にする必要があります。Visual Basic RBG画面からキャプチャ
助けが必要ですか?
ビジュアルベーシックで画面をキャプチャし、それをピクセル値のRBG配列に変換するコードが必要です。かなり高速にする必要があります。Visual Basic RBG画面からキャプチャ
助けが必要ですか?
このコードは、ウィンドウまたはデスクトップ全体(仮想スクリーン)からのスクリーンショットをキャプチャし、それをカスタムピクチャボックスに描画します。
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function GetDesktopWindow Lib "user32"() As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Private Const SM_XVIRTUALSCREEN = 76
Private Const SM_YVIRTUALSCREEN = 77
Private Const SM_CYVIRTUALSCREEN = 79
Private Const SM_CXVIRTUALSCREEN = 78
Private Sub GetScreenshot(Optional ByVal hWnd As Long = 0)
Dim hDC As Long
Dim WindowRect As RECT
Dim Left As Long
Dim Top As Long
Dim Width As Long
Dim Height As Long
If hWnd = 0 Then
'Get the DC of the desktop
hDC = GetWindowDC(GetDesktopWindow)
'Get the virtual screen coordinates (this handles multiple monitors too :)
Left = GetSystemMetrics(SM_XVIRTUALSCREEN)
Top = GetSystemMetrics(SM_YVIRTUALSCREEN)
Width = GetSystemMetrics(SM_CXVIRTUALSCREEN)
Height = GetSystemMetrics(SM_CYVIRTUALSCREEN)
Else
'Get the DC of the window we want to capture
hDC = GetWindowDC(hWnd)
'Get the window coordinates
GetWindowRect hWnd, WindowRect
Left = 0
Top = 0
Width = WindowRect.Right - WindowRect.Left
Height = WindowRect.Bottom - WindowRect.Top
End If
'BitBlt into our own DC
BitBlt picScreen.hDC, 0, 0, Width, Height, hDC, Left, Top, vbSrcCopy
'Delete our reference to the windows's DC
ReleaseDC hWnd, hDC
End Function
デスクトップのキャプチャ時には、GetSystemMetrics()
を使用していることに注意してください。これにより、just the primary monitorの代わりに複数のモニタが使用されているときに、仮想スクリーン画面の完全な大きさを得ることができます。
私はまだ何も試していませんが(ルビーでたくさんあります) – marscom
[any](http://www.developerfusion.com/code/181/capture-screenshot/)[http://www.codeproject .com /記事/ 27269 /キャプチャ - スクリーンショットのスクリーンショット - [プログラムによる] [これら](https://www.google.co.uk/search?hl=en&q=vb6+capture+screenshot&meta=)回答なしあなたの質問? – Deanna
ああ、ARGBはオクテットの正規の順番であり、Windows固有のものです。 – Deanna